)]}'
{"api-ref/source/parameters.yaml":[{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"a19e38ac06cac864f93b1909127f5dc218aec1bc","unresolved":false,"context_lines":[{"line_number":146,"context_line":"amphora-status:"},{"line_number":147,"context_line":"  description: |"},{"line_number":148,"context_line":"    The status of the amphora. One of: ``BOOTING``, ``ALLOCATED``, ``READY``,"},{"line_number":149,"context_line":"    ``PENDING_CREATE``, ``PENDING_DELETE``, ``DELETED``, ``ERROR``, "},{"line_number":150,"context_line":"    ``SCHEDULED_FOR_DELETE``."},{"line_number":151,"context_line":"  in: body"},{"line_number":152,"context_line":"  required: true"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3f79a3b5_2aa15d47","line":149,"updated":"2018-09-12 04:25:15.000000000","message":"nit: trailing whitespace","commit_id":"0fbf73a406eeec448a92ce52589e5e28e23094ee"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"e4c468f09df85ea6b94eb34ec7151d039fc6ed4e","unresolved":false,"context_lines":[{"line_number":146,"context_line":"amphora-status:"},{"line_number":147,"context_line":"  description: |"},{"line_number":148,"context_line":"    The status of the amphora. One of: ``BOOTING``, ``ALLOCATED``, ``READY``,"},{"line_number":149,"context_line":"    ``PENDING_CREATE``, ``PENDING_DELETE``, ``DELETED``, ``ERROR``, "},{"line_number":150,"context_line":"    ``SCHEDULED_FOR_DELETE``."},{"line_number":151,"context_line":"  in: body"},{"line_number":152,"context_line":"  required: true"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3f79a3b5_6af0aa92","line":149,"in_reply_to":"3f79a3b5_2aa15d47","updated":"2018-09-12 15:43:12.000000000","message":"Done","commit_id":"0fbf73a406eeec448a92ce52589e5e28e23094ee"}],"octavia/cmd/health_manager.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"516cf219aba714fced7bdde99db63c5c3fe6155d","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @periodics.periodic(CONF.health_manager.amp_check_interval,"},{"line_number":67,"context_line":"                        run_immediately\u003dTrue)"},{"line_number":68,"context_line":"    def periodic_amp_delete():"},{"line_number":69,"context_line":"        hm.amp_delete()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    health_check \u003d periodics.PeriodicWorker("}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_a9493c66","line":68,"updated":"2018-08-01 19:42:56.000000000","message":"I think this should have a cool name, like \"zombie_hunter\" or \"orphan_reaper\" or something. :P","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"fd28ff2849ee3707f9ee387cd39bb307f0d6487d","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @periodics.periodic(CONF.health_manager.amp_check_interval,"},{"line_number":67,"context_line":"                        run_immediately\u003dTrue)"},{"line_number":68,"context_line":"    def periodic_amp_delete():"},{"line_number":69,"context_line":"        hm.amp_delete()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    health_check \u003d periodics.PeriodicWorker("}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_84a0e7f3","line":68,"in_reply_to":"5f7c97a3_a9493c66","updated":"2018-08-01 20:01:28.000000000","message":"Done","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"4ed3f3f736d681f59781ea6c5f7745e5a062378d","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @periodics.periodic(CONF.health_manager.zombie_check_interval,"},{"line_number":67,"context_line":"                        run_immediately\u003dTrue)"},{"line_number":68,"context_line":"    def periodic_zombie_hunter():"},{"line_number":69,"context_line":"        hm.zombie_hunter()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    health_check \u003d periodics.PeriodicWorker("}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_2bf8b67b","line":68,"updated":"2018-08-02 09:17:02.000000000","message":"Yessssssss","commit_id":"6694c5573121e6729dc1ac344fab4dfb02542d5a"}],"octavia/common/config.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"516cf219aba714fced7bdde99db63c5c3fe6155d","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    cfg.IntOpt(\u0027health_check_interval\u0027,"},{"line_number":183,"context_line":"               default\u003d3,"},{"line_number":184,"context_line":"               help\u003d_(\u0027Sleep time between health checks in seconds.\u0027)),"},{"line_number":185,"context_line":"    cfg.IntOpt(\u0027amp_check_interval\u0027,"},{"line_number":186,"context_line":"               default\u003d600,"},{"line_number":187,"context_line":"               help\u003d_(\u0027Sleep time between amp delete checks in seconds.\u0027)),"},{"line_number":188,"context_line":"    cfg.IntOpt(\u0027sock_rlimit\u0027, default\u003d0,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_896b20b6","line":185,"updated":"2018-08-01 19:42:56.000000000","message":"This is super generic, what is it checking for? I know it has a description here, but think if someone only saw the name in a config file...\nMaybe something like \"zombie_check_interval\"?","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"fd28ff2849ee3707f9ee387cd39bb307f0d6487d","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    cfg.IntOpt(\u0027health_check_interval\u0027,"},{"line_number":183,"context_line":"               default\u003d3,"},{"line_number":184,"context_line":"               help\u003d_(\u0027Sleep time between health checks in seconds.\u0027)),"},{"line_number":185,"context_line":"    cfg.IntOpt(\u0027amp_check_interval\u0027,"},{"line_number":186,"context_line":"               default\u003d600,"},{"line_number":187,"context_line":"               help\u003d_(\u0027Sleep time between amp delete checks in seconds.\u0027)),"},{"line_number":188,"context_line":"    cfg.IntOpt(\u0027sock_rlimit\u0027, default\u003d0,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_448f2f75","line":185,"in_reply_to":"5f7c97a3_896b20b6","updated":"2018-08-01 20:01:28.000000000","message":"Done","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"4ed3f3f736d681f59781ea6c5f7745e5a062378d","unresolved":false,"context_lines":[{"line_number":184,"context_line":"               help\u003d_(\u0027Sleep time between health checks in seconds.\u0027)),"},{"line_number":185,"context_line":"    cfg.IntOpt(\u0027zombie_check_interval\u0027,"},{"line_number":186,"context_line":"               default\u003d600,"},{"line_number":187,"context_line":"               help\u003d_(\u0027Sleep time between amp delete checks in seconds.\u0027)),"},{"line_number":188,"context_line":"    cfg.IntOpt(\u0027sock_rlimit\u0027, default\u003d0,"},{"line_number":189,"context_line":"               help\u003d_(\u0027 sets the value of the heartbeat recv buffer\u0027)),"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_ab4046a4","line":187,"updated":"2018-08-02 09:17:02.000000000","message":"Should maybe also reword the help text if you make another patchset, which you will have to for pep8. :)","commit_id":"6694c5573121e6729dc1ac344fab4dfb02542d5a"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"8172bf206c8f64a1f98f8e40236ad2a06c208963","unresolved":false,"context_lines":[{"line_number":184,"context_line":"               help\u003d_(\u0027Sleep time between health checks in seconds.\u0027)),"},{"line_number":185,"context_line":"    cfg.IntOpt(\u0027zombie_check_interval\u0027,"},{"line_number":186,"context_line":"               default\u003d600,"},{"line_number":187,"context_line":"               help\u003d_(\u0027Sleep time between amp delete checks in seconds.\u0027)),"},{"line_number":188,"context_line":"    cfg.IntOpt(\u0027sock_rlimit\u0027, default\u003d0,"},{"line_number":189,"context_line":"               help\u003d_(\u0027 sets the value of the heartbeat recv buffer\u0027)),"},{"line_number":190,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_6d19de84","line":187,"in_reply_to":"5f7c97a3_ab4046a4","updated":"2018-08-02 13:40:39.000000000","message":"Done","commit_id":"6694c5573121e6729dc1ac344fab4dfb02542d5a"}],"octavia/common/constants.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"516cf219aba714fced7bdde99db63c5c3fe6155d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"PENDING_CREATE \u003d \u0027PENDING_CREATE\u0027"},{"line_number":109,"context_line":"DELETED \u003d \u0027DELETED\u0027"},{"line_number":110,"context_line":"ERROR \u003d \u0027ERROR\u0027"},{"line_number":111,"context_line":"SCHEDULE_FOR_DELETE \u003d \u0027SCHEDULE_FOR_DELETE\u0027"},{"line_number":112,"context_line":"SUPPORTED_PROVISIONING_STATUSES \u003d (ACTIVE, AMPHORA_ALLOCATED,"},{"line_number":113,"context_line":"                                   AMPHORA_BOOTING, AMPHORA_READY,"},{"line_number":114,"context_line":"                                   PENDING_DELETE, PENDING_CREATE,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_69eb2410","line":111,"updated":"2018-08-01 19:42:56.000000000","message":"The tense here is weird -- if you really do need this (I\u0027m still kinda with johnsom, not sure why it\u0027s necessary) then *SCHEDULED","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"fd28ff2849ee3707f9ee387cd39bb307f0d6487d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"PENDING_CREATE \u003d \u0027PENDING_CREATE\u0027"},{"line_number":109,"context_line":"DELETED \u003d \u0027DELETED\u0027"},{"line_number":110,"context_line":"ERROR \u003d \u0027ERROR\u0027"},{"line_number":111,"context_line":"SCHEDULE_FOR_DELETE \u003d \u0027SCHEDULE_FOR_DELETE\u0027"},{"line_number":112,"context_line":"SUPPORTED_PROVISIONING_STATUSES \u003d (ACTIVE, AMPHORA_ALLOCATED,"},{"line_number":113,"context_line":"                                   AMPHORA_BOOTING, AMPHORA_READY,"},{"line_number":114,"context_line":"                                   PENDING_DELETE, PENDING_CREATE,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_04da9774","line":111,"in_reply_to":"5f7c97a3_69eb2410","updated":"2018-08-01 20:01:28.000000000","message":"Done. When we detect a zombie amphora we don\u0027t write the heartbeat to the DB so we don\u0027t know its a zombie unless we set this. Alternatively, we could write the heartbeat to the DB and run the logic in the periodic.","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"4ed3f3f736d681f59781ea6c5f7745e5a062378d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"PENDING_CREATE \u003d \u0027PENDING_CREATE\u0027"},{"line_number":109,"context_line":"DELETED \u003d \u0027DELETED\u0027"},{"line_number":110,"context_line":"ERROR \u003d \u0027ERROR\u0027"},{"line_number":111,"context_line":"SCHEDULED_FOR_DELETE \u003d \u0027SCHEDULE_FOR_DELETE\u0027"},{"line_number":112,"context_line":"SUPPORTED_PROVISIONING_STATUSES \u003d (ACTIVE, AMPHORA_ALLOCATED,"},{"line_number":113,"context_line":"                                   AMPHORA_BOOTING, AMPHORA_READY,"},{"line_number":114,"context_line":"                                   PENDING_DELETE, PENDING_CREATE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_cbe6e2db","line":111,"updated":"2018-08-02 09:17:02.000000000","message":"You didn\u0027t actually change the string :P","commit_id":"6694c5573121e6729dc1ac344fab4dfb02542d5a"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"8172bf206c8f64a1f98f8e40236ad2a06c208963","unresolved":false,"context_lines":[{"line_number":108,"context_line":"PENDING_CREATE \u003d \u0027PENDING_CREATE\u0027"},{"line_number":109,"context_line":"DELETED \u003d \u0027DELETED\u0027"},{"line_number":110,"context_line":"ERROR \u003d \u0027ERROR\u0027"},{"line_number":111,"context_line":"SCHEDULED_FOR_DELETE \u003d \u0027SCHEDULE_FOR_DELETE\u0027"},{"line_number":112,"context_line":"SUPPORTED_PROVISIONING_STATUSES \u003d (ACTIVE, AMPHORA_ALLOCATED,"},{"line_number":113,"context_line":"                                   AMPHORA_BOOTING, AMPHORA_READY,"},{"line_number":114,"context_line":"                                   PENDING_DELETE, PENDING_CREATE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_2d0f6638","line":111,"in_reply_to":"5f7c97a3_cbe6e2db","updated":"2018-08-02 13:40:39.000000000","message":"Done","commit_id":"6694c5573121e6729dc1ac344fab4dfb02542d5a"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a287781fd8f9b78af1eb8f981c81999aecf99f0c","unresolved":false,"context_lines":[{"line_number":124,"context_line":"SUPPORTED_AMPHORA_STATUSES \u003d (AMPHORA_ALLOCATED, AMPHORA_BOOTING, ERROR,"},{"line_number":125,"context_line":"                              AMPHORA_READY, DELETED,"},{"line_number":126,"context_line":"                              PENDING_CREATE, PENDING_DELETE,"},{"line_number":127,"context_line":"                              SCHEDULED_FOR_DELETE)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"ONLINE \u003d \u0027ONLINE\u0027"},{"line_number":130,"context_line":"OFFLINE \u003d \u0027OFFLINE\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_0f1ff609","line":127,"range":{"start_line":127,"start_character":30,"end_line":127,"end_character":50},"updated":"2018-08-28 21:33:31.000000000","message":"should we bump the API minor version for this?","commit_id":"25923f39d29179dff354b6d62e99ff11ecdad834"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"5a64acb529a66cebe4da0c837b0f4955feafcc91","unresolved":false,"context_lines":[{"line_number":124,"context_line":"SUPPORTED_AMPHORA_STATUSES \u003d (AMPHORA_ALLOCATED, AMPHORA_BOOTING, ERROR,"},{"line_number":125,"context_line":"                              AMPHORA_READY, DELETED,"},{"line_number":126,"context_line":"                              PENDING_CREATE, PENDING_DELETE,"},{"line_number":127,"context_line":"                              SCHEDULED_FOR_DELETE)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"ONLINE \u003d \u0027ONLINE\u0027"},{"line_number":130,"context_line":"OFFLINE \u003d \u0027OFFLINE\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_0fe4d60d","line":127,"range":{"start_line":127,"start_character":30,"end_line":127,"end_character":50},"in_reply_to":"3f79a3b5_0f1ff609","updated":"2018-08-28 21:36:03.000000000","message":"This is internal and you can only see it when you run admin/amphora stuff... so no, not necessary.","commit_id":"25923f39d29179dff354b6d62e99ff11ecdad834"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"8472255e19428c1378d803daf9315f9342b8c815","unresolved":false,"context_lines":[{"line_number":124,"context_line":"SUPPORTED_AMPHORA_STATUSES \u003d (AMPHORA_ALLOCATED, AMPHORA_BOOTING, ERROR,"},{"line_number":125,"context_line":"                              AMPHORA_READY, DELETED,"},{"line_number":126,"context_line":"                              PENDING_CREATE, PENDING_DELETE,"},{"line_number":127,"context_line":"                              SCHEDULED_FOR_DELETE)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"ONLINE \u003d \u0027ONLINE\u0027"},{"line_number":130,"context_line":"OFFLINE \u003d \u0027OFFLINE\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_876af418","line":127,"range":{"start_line":127,"start_character":30,"end_line":127,"end_character":50},"in_reply_to":"3f79a3b5_0fe4d60d","updated":"2018-08-30 13:28:39.000000000","message":"this still counts as API change, but let\u0027s see what other folks say about this.","commit_id":"25923f39d29179dff354b6d62e99ff11ecdad834"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"7126e4b8299b70e99dce30a9cd5c4aa3d32e55db","unresolved":false,"context_lines":[{"line_number":124,"context_line":"SUPPORTED_AMPHORA_STATUSES \u003d (AMPHORA_ALLOCATED, AMPHORA_BOOTING, ERROR,"},{"line_number":125,"context_line":"                              AMPHORA_READY, DELETED,"},{"line_number":126,"context_line":"                              PENDING_CREATE, PENDING_DELETE,"},{"line_number":127,"context_line":"                              SCHEDULED_FOR_DELETE)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"ONLINE \u003d \u0027ONLINE\u0027"},{"line_number":130,"context_line":"OFFLINE \u003d \u0027OFFLINE\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_cf11a555","line":127,"range":{"start_line":127,"start_character":30,"end_line":127,"end_character":50},"in_reply_to":"3f79a3b5_876af418","updated":"2018-08-31 21:43:10.000000000","message":"hmmm, not so sure about API version, but it should be documented in the API reference for sure. I guess if we can test this scenario with tempest it should for sure bump the version #.","commit_id":"25923f39d29179dff354b6d62e99ff11ecdad834"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"a19e38ac06cac864f93b1909127f5dc218aec1bc","unresolved":false,"context_lines":[{"line_number":124,"context_line":"SUPPORTED_AMPHORA_STATUSES \u003d (AMPHORA_ALLOCATED, AMPHORA_BOOTING, ERROR,"},{"line_number":125,"context_line":"                              AMPHORA_READY, DELETED,"},{"line_number":126,"context_line":"                              PENDING_CREATE, PENDING_DELETE,"},{"line_number":127,"context_line":"                              SCHEDULED_FOR_DELETE)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"ONLINE \u003d \u0027ONLINE\u0027"},{"line_number":130,"context_line":"OFFLINE \u003d \u0027OFFLINE\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_aaa56d49","line":127,"range":{"start_line":127,"start_character":30,"end_line":127,"end_character":50},"in_reply_to":"3f79a3b5_cf11a555","updated":"2018-09-12 04:25:15.000000000","message":"+1 API bump","commit_id":"25923f39d29179dff354b6d62e99ff11ecdad834"}],"octavia/controller/healthmanager/health_drivers/update_db.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"516cf219aba714fced7bdde99db63c5c3fe6155d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        else:"},{"line_number":124,"context_line":"            # If this is not a spare amp, log and skip it."},{"line_number":125,"context_line":"            amp \u003d self.amphora_repo.get(session, id\u003dhealth[\u0027id\u0027])"},{"line_number":126,"context_line":"            if not amp or amp.load_balancer_id:"},{"line_number":127,"context_line":"                # This is debug and not warning because this can happen under"},{"line_number":128,"context_line":"                # normal deleting operations."},{"line_number":129,"context_line":"                LOG.debug(\u0027Received a health heartbeat from amphora {0} with \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_6939e49f","line":126,"updated":"2018-08-01 19:42:56.000000000","message":"Wait a sec, unrelated to your patch, but how do we meet the condition \"amp.load_balancer_id\" here? That would mean we pulled the amp successfully from the amp table, and it had an LB_ID -- which given that it\u0027s a foreign key, should mean the LB would definitely come back earlier and we\u0027d match on db_lb?","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"c4ed5b54689dfaf302a4ecb68526e8f9466597f0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        else:"},{"line_number":124,"context_line":"            # If this is not a spare amp, log and skip it."},{"line_number":125,"context_line":"            amp \u003d self.amphora_repo.get(session, id\u003dhealth[\u0027id\u0027])"},{"line_number":126,"context_line":"            if not amp or amp.load_balancer_id:"},{"line_number":127,"context_line":"                # This is debug and not warning because this can happen under"},{"line_number":128,"context_line":"                # normal deleting operations."},{"line_number":129,"context_line":"                LOG.debug(\u0027Received a health heartbeat from amphora {0} with \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_2baaf66b","line":126,"in_reply_to":"5f7c97a3_4433aff7","updated":"2018-08-02 09:11:23.000000000","message":"Ah, got it, the get is filtering a bit... Ok.","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"fd28ff2849ee3707f9ee387cd39bb307f0d6487d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        else:"},{"line_number":124,"context_line":"            # If this is not a spare amp, log and skip it."},{"line_number":125,"context_line":"            amp \u003d self.amphora_repo.get(session, id\u003dhealth[\u0027id\u0027])"},{"line_number":126,"context_line":"            if not amp or amp.load_balancer_id:"},{"line_number":127,"context_line":"                # This is debug and not warning because this can happen under"},{"line_number":128,"context_line":"                # normal deleting operations."},{"line_number":129,"context_line":"                LOG.debug(\u0027Received a health heartbeat from amphora {0} with \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_4433aff7","line":126,"in_reply_to":"5f7c97a3_6939e49f","updated":"2018-08-01 20:01:28.000000000","message":"db_lb only gets filled if the LB is in working order (aka not DELETED). So this checks in a convoluted way that we have heart_beats from an AMP whose lb is not in a state we would expect it to still have amps.","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"516cf219aba714fced7bdde99db63c5c3fe6155d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                          \u0027will only see this message a few \u0027"},{"line_number":133,"context_line":"                          \u0027times\u0027.format(health[\u0027id\u0027], srcaddr))"},{"line_number":134,"context_line":"                if not amp:"},{"line_number":135,"context_line":"                    LOG.debug(\u0027Amphora is already deleted. So it needs to be \u0027"},{"line_number":136,"context_line":"                              \u0027deleted manually from nova\u0027)"},{"line_number":137,"context_line":"                    return"},{"line_number":138,"context_line":"                if amp.status not in (constants.SCHEDULE_FOR_DELETE,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_291e8c0c","line":135,"updated":"2018-08-01 19:42:56.000000000","message":"\"The amphora is missing from the DB, so it cannot be automatically deleted (the compute_id is unknown). An operator must manually delete it from the compute service.\"","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"4ed3f3f736d681f59781ea6c5f7745e5a062378d","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                          \u0027will only see this message a few \u0027"},{"line_number":133,"context_line":"                          \u0027times\u0027.format(health[\u0027id\u0027], srcaddr))"},{"line_number":134,"context_line":"                if not amp:"},{"line_number":135,"context_line":"                    LOG.debug(\u0027Amphora is already deleted. So it needs to be \u0027"},{"line_number":136,"context_line":"                              \u0027deleted manually from nova\u0027)"},{"line_number":137,"context_line":"                    return"},{"line_number":138,"context_line":"                if amp.status not in (constants.SCHEDULED_FOR_DELETE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_8b61ca3a","line":135,"updated":"2018-08-02 09:17:02.000000000","message":"You ignored my previous comment here -- this string really needs to be updated. One specific issue is that it says \"nova\" here.\nAlso, \"Amphora is already deleted.\" is a vague message, we should be clear we mean \"from the DB\", as otherwise it\u0027s confusing why we\u0027d need to delete something that is already deleted.\nI recommend the text from my last comment in PS5. :)","commit_id":"6694c5573121e6729dc1ac344fab4dfb02542d5a"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"8172bf206c8f64a1f98f8e40236ad2a06c208963","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                          \u0027will only see this message a few \u0027"},{"line_number":133,"context_line":"                          \u0027times\u0027.format(health[\u0027id\u0027], srcaddr))"},{"line_number":134,"context_line":"                if not amp:"},{"line_number":135,"context_line":"                    LOG.debug(\u0027Amphora is already deleted. So it needs to be \u0027"},{"line_number":136,"context_line":"                              \u0027deleted manually from nova\u0027)"},{"line_number":137,"context_line":"                    return"},{"line_number":138,"context_line":"                if amp.status not in (constants.SCHEDULED_FOR_DELETE,"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f7c97a3_752528ad","line":135,"in_reply_to":"5f7c97a3_8b61ca3a","updated":"2018-08-02 13:40:39.000000000","message":"Done","commit_id":"6694c5573121e6729dc1ac344fab4dfb02542d5a"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"6fee226536771b732a744fcd0e3ebd47407a5c83","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                          \u0027IP {1} that should not exist. This amphora may be \u0027"},{"line_number":131,"context_line":"                          \u0027in the process of being deleted, in which case you \u0027"},{"line_number":132,"context_line":"                          \u0027will only see this message a few \u0027"},{"line_number":133,"context_line":"                          \u0027times\u0027.format(health[\u0027id\u0027], srcaddr))"},{"line_number":134,"context_line":"                if not amp:"},{"line_number":135,"context_line":"                    LOG.debug(\u0027The amphora is missing from the DB, so it \u0027"},{"line_number":136,"context_line":"                              \u0027cannot be automatically deleted (the \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_b8299f37","line":133,"range":{"start_line":133,"start_character":27,"end_line":133,"end_character":33},"updated":"2018-09-13 18:17:18.000000000","message":"You may forget the \".\", ;-)","commit_id":"75bbfd92669cedc874e8f2dbb9d45e5e8127e1c2"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"6fee226536771b732a744fcd0e3ebd47407a5c83","unresolved":false,"context_lines":[{"line_number":137,"context_line":"                              \u0027compute_id is unknown). An operator must \u0027"},{"line_number":138,"context_line":"                              \u0027manually delete it from the compute service.\u0027)"},{"line_number":139,"context_line":"                    return"},{"line_number":140,"context_line":"                if amp.status not in (constants.SCHEDULED_FOR_DELETE,"},{"line_number":141,"context_line":"                                      constants.PENDING_DELETE):"},{"line_number":142,"context_line":"                    self.amphora_repo.update("},{"line_number":143,"context_line":"                        db_api.get_session(), amp.id,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_78e4670d","line":140,"range":{"start_line":140,"start_character":16,"end_line":140,"end_character":19},"updated":"2018-09-13 18:17:18.000000000","message":"how about elif, and remove the return in L139, then just 1 return(L145)?","commit_id":"75bbfd92669cedc874e8f2dbb9d45e5e8127e1c2"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1f9f566faef459a884d704f4af99788a6415cd41","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            if \u0027PENDING\u0027 in db_lb.provisioning_status:"},{"line_number":147,"context_line":"                ignore_listener_count \u003d True"},{"line_number":148,"context_line":"        else:"},{"line_number":149,"context_line":"            # If this is not a spare amp, log and skip it."},{"line_number":150,"context_line":"            amp \u003d self.amphora_repo.get(session, id\u003dhealth[\u0027id\u0027])"},{"line_number":151,"context_line":"            if not amp or amp.load_balancer_id:"},{"line_number":152,"context_line":"                # This is debug and not warning because this can happen under"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_f407941c","line":149,"updated":"2018-08-31 21:41:12.000000000","message":"This is no longer accurate.","commit_id":"25923f39d29179dff354b6d62e99ff11ecdad834"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"1f9f566faef459a884d704f4af99788a6415cd41","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                          \u0027in the process of being deleted, in which case you \u0027"},{"line_number":157,"context_line":"                          \u0027will only see this message a few \u0027"},{"line_number":158,"context_line":"                          \u0027times\u0027.format(health[\u0027id\u0027], srcaddr))"},{"line_number":159,"context_line":"                if not amp:"},{"line_number":160,"context_line":"                    LOG.debug(\u0027The amphora is missing from the DB, so it \u0027"},{"line_number":161,"context_line":"                              \u0027cannot be automatically deleted (the \u0027"},{"line_number":162,"context_line":"                              \u0027compute_id is unknown). An operator must \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_34166c57","line":159,"updated":"2018-08-31 21:41:12.000000000","message":"You might consider moving this up and checking if the status is PENDING_DELETE before logging.","commit_id":"25923f39d29179dff354b6d62e99ff11ecdad834"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"19bd47815abe07ddd6eb4e126db8ae2d22a39fb6","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                          \u0027will only see this message a few \u0027"},{"line_number":158,"context_line":"                          \u0027times\u0027.format(health[\u0027id\u0027], srcaddr))"},{"line_number":159,"context_line":"                if not amp:"},{"line_number":160,"context_line":"                    LOG.debug(\u0027The amphora is missing from the DB, so it \u0027"},{"line_number":161,"context_line":"                              \u0027cannot be automatically deleted (the \u0027"},{"line_number":162,"context_line":"                              \u0027compute_id is unknown). An operator must \u0027"},{"line_number":163,"context_line":"                              \u0027manually delete it from the compute service.\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_182b5733","line":160,"range":{"start_line":160,"start_character":35,"end_line":160,"end_character":42},"updated":"2018-09-27 20:54:00.000000000","message":"I am aware amp id and IP are being logged right before this log msg, but it may not be easy to follow in case more messages are logged in between the two. Also, if we make this LOG.warn and debug is disable, admins will nowhere see for sure amp id and IP.","commit_id":"0844072a87e26eadd7f43b8dca77311799e853af"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"19bd47815abe07ddd6eb4e126db8ae2d22a39fb6","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                          \u0027will only see this message a few \u0027"},{"line_number":158,"context_line":"                          \u0027times\u0027.format(health[\u0027id\u0027], srcaddr))"},{"line_number":159,"context_line":"                if not amp:"},{"line_number":160,"context_line":"                    LOG.debug(\u0027The amphora is missing from the DB, so it \u0027"},{"line_number":161,"context_line":"                              \u0027cannot be automatically deleted (the \u0027"},{"line_number":162,"context_line":"                              \u0027compute_id is unknown). An operator must \u0027"},{"line_number":163,"context_line":"                              \u0027manually delete it from the compute service.\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_9838c7d4","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":29},"updated":"2018-09-27 20:54:00.000000000","message":"make this LOG.warn?","commit_id":"0844072a87e26eadd7f43b8dca77311799e853af"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"cda7f2c8c537743e1f1b932356f1903d96b8e5b6","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                          \u0027will only see this message a few \u0027"},{"line_number":158,"context_line":"                          \u0027times\u0027.format(health[\u0027id\u0027], srcaddr))"},{"line_number":159,"context_line":"                if not amp:"},{"line_number":160,"context_line":"                    LOG.debug(\u0027The amphora is missing from the DB, so it \u0027"},{"line_number":161,"context_line":"                              \u0027cannot be automatically deleted (the \u0027"},{"line_number":162,"context_line":"                              \u0027compute_id is unknown). An operator must \u0027"},{"line_number":163,"context_line":"                              \u0027manually delete it from the compute service.\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_38f09366","line":160,"range":{"start_line":160,"start_character":35,"end_line":160,"end_character":42},"in_reply_to":"3f79a3b5_182b5733","updated":"2018-09-27 21:43:08.000000000","message":"Done","commit_id":"0844072a87e26eadd7f43b8dca77311799e853af"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"cda7f2c8c537743e1f1b932356f1903d96b8e5b6","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                          \u0027will only see this message a few \u0027"},{"line_number":158,"context_line":"                          \u0027times\u0027.format(health[\u0027id\u0027], srcaddr))"},{"line_number":159,"context_line":"                if not amp:"},{"line_number":160,"context_line":"                    LOG.debug(\u0027The amphora is missing from the DB, so it \u0027"},{"line_number":161,"context_line":"                              \u0027cannot be automatically deleted (the \u0027"},{"line_number":162,"context_line":"                              \u0027compute_id is unknown). An operator must \u0027"},{"line_number":163,"context_line":"                              \u0027manually delete it from the compute service.\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_78dccbe0","line":160,"range":{"start_line":160,"start_character":24,"end_line":160,"end_character":29},"in_reply_to":"3f79a3b5_9838c7d4","updated":"2018-09-27 21:43:08.000000000","message":"Done","commit_id":"0844072a87e26eadd7f43b8dca77311799e853af"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"19bd47815abe07ddd6eb4e126db8ae2d22a39fb6","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                              \u0027manually delete it from the compute service.\u0027)"},{"line_number":164,"context_line":"                    return"},{"line_number":165,"context_line":"                # delete the amp right there"},{"line_number":166,"context_line":"                try:"},{"line_number":167,"context_line":"                    compute \u003d stevedore_driver.DriverManager("},{"line_number":168,"context_line":"                        namespace\u003d\u0027octavia.compute.drivers\u0027,"},{"line_number":169,"context_line":"                        name\u003dCONF.controller_worker.compute_driver,"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_18b917eb","line":166,"updated":"2018-09-27 20:54:00.000000000","message":"shouldn\u0027t we delete only when amp is not in pending delete?","commit_id":"0844072a87e26eadd7f43b8dca77311799e853af"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"19bd47815abe07ddd6eb4e126db8ae2d22a39fb6","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                    return"},{"line_number":165,"context_line":"                # delete the amp right there"},{"line_number":166,"context_line":"                try:"},{"line_number":167,"context_line":"                    compute \u003d stevedore_driver.DriverManager("},{"line_number":168,"context_line":"                        namespace\u003d\u0027octavia.compute.drivers\u0027,"},{"line_number":169,"context_line":"                        name\u003dCONF.controller_worker.compute_driver,"},{"line_number":170,"context_line":"                        invoke_on_load\u003dTrue"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_1887d714","line":167,"updated":"2018-09-27 20:54:00.000000000","message":"why not leverage task ComputeDelete?","commit_id":"0844072a87e26eadd7f43b8dca77311799e853af"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"19bd47815abe07ddd6eb4e126db8ae2d22a39fb6","unresolved":false,"context_lines":[{"line_number":172,"context_line":"                    compute.delete(amp.compute_id)"},{"line_number":173,"context_line":"                    return"},{"line_number":174,"context_line":"                except Exception as e:"},{"line_number":175,"context_line":"                    LOG.info(\"Error deleting amp\", e)"},{"line_number":176,"context_line":"            expected_listener_count \u003d 0"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        # Do not update amphora health if the reporting listener count"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f79a3b5_987a0723","line":175,"range":{"start_line":175,"start_character":30,"end_line":175,"end_character":48},"updated":"2018-09-27 20:54:00.000000000","message":"Error deleting amp $id (compute id $c_id)","commit_id":"0844072a87e26eadd7f43b8dca77311799e853af"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"8f3a6661185131e76316b86a085aa4543f90e6fc","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                    return"},{"line_number":166,"context_line":"                # delete the amp right there"},{"line_number":167,"context_line":"                if amp.status is not constants.PENDING_DELETE:"},{"line_number":168,"context_line":"                    # TODO(cgoncalves): use controller_worker.delete_amphora"},{"line_number":169,"context_line":"                    try:"},{"line_number":170,"context_line":"                        compute \u003d stevedore_driver.DriverManager("},{"line_number":171,"context_line":"                            namespace\u003d\u0027octavia.compute.drivers\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_1b34b1ab","line":168,"updated":"2018-09-27 21:45:54.000000000","message":"delete_amphora is too heavy here + we tried that before. In the cases I had in. my system all was needed was a nova delete -- so let\u0027s not overcomplicate that here.","commit_id":"91873c778071ce6caedd02c89b358d2ac34178b3"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"c89bd0898d627cbea2d301dbddd61dbd4d14b62b","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                    return"},{"line_number":166,"context_line":"                # delete the amp right there"},{"line_number":167,"context_line":"                if amp.status is not constants.PENDING_DELETE:"},{"line_number":168,"context_line":"                    # TODO(cgoncalves): use controller_worker.delete_amphora"},{"line_number":169,"context_line":"                    try:"},{"line_number":170,"context_line":"                        compute \u003d stevedore_driver.DriverManager("},{"line_number":171,"context_line":"                            namespace\u003d\u0027octavia.compute.drivers\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_daf13a02","line":168,"in_reply_to":"3f79a3b5_1b34b1ab","updated":"2018-10-01 16:53:36.000000000","message":"Good to know. Thanks for the feedback!","commit_id":"91873c778071ce6caedd02c89b358d2ac34178b3"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"324d807d65cd5fd3bfb616e3dde450f979c32ea1","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                    return"},{"line_number":166,"context_line":"                # delete the amp right there"},{"line_number":167,"context_line":"                if amp.status is not constants.PENDING_DELETE:"},{"line_number":168,"context_line":"                    # TODO(cgoncalves): use controller_worker.delete_amphora"},{"line_number":169,"context_line":"                    try:"},{"line_number":170,"context_line":"                        compute \u003d stevedore_driver.DriverManager("},{"line_number":171,"context_line":"                            namespace\u003d\u0027octavia.compute.drivers\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_3d7b6529","line":168,"in_reply_to":"3f79a3b5_1b34b1ab","updated":"2018-10-01 16:47:51.000000000","message":"Yeah, I kind of agree with German. The amp delete flow assumes the amp is still \"live\" and messes with health monitoring stuff that is already set if we got here.  I think the whack-a-mole approach is probably best.","commit_id":"91873c778071ce6caedd02c89b358d2ac34178b3"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"29c7e15f1ee42e88704f4b9d2044dec182266dfa","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                        compute.delete(amp.compute_id)"},{"line_number":176,"context_line":"                        return"},{"line_number":177,"context_line":"                    except Exception as e:"},{"line_number":178,"context_line":"                        LOG.info(\"Error deleting amp\", e)"},{"line_number":179,"context_line":"            expected_listener_count \u003d 0"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Do not update amphora health if the reporting listener count"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_fb40d508","line":178,"range":{"start_line":178,"start_character":34,"end_line":178,"end_character":52},"updated":"2018-09-27 21:45:20.000000000","message":"I forgot to address my previous comment here. I\u0027ll do it on next PS.","commit_id":"91873c778071ce6caedd02c89b358d2ac34178b3"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"c89bd0898d627cbea2d301dbddd61dbd4d14b62b","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                        compute.delete(amp.compute_id)"},{"line_number":176,"context_line":"                        return"},{"line_number":177,"context_line":"                    except Exception as e:"},{"line_number":178,"context_line":"                        LOG.info(\"Error deleting amp\", e)"},{"line_number":179,"context_line":"            expected_listener_count \u003d 0"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        # Do not update amphora health if the reporting listener count"}],"source_content_type":"text/x-python","patch_set":20,"id":"3f79a3b5_bd28d5ed","line":178,"range":{"start_line":178,"start_character":34,"end_line":178,"end_character":52},"in_reply_to":"3f79a3b5_fb40d508","updated":"2018-10-01 16:53:36.000000000","message":"Done","commit_id":"91873c778071ce6caedd02c89b358d2ac34178b3"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"91703815f9fae72600f2df651194f3dd79694533","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                                \u0027so it cannot be automatically deleted (the \u0027"},{"line_number":162,"context_line":"                                \u0027compute_id is unknown). An operator must \u0027"},{"line_number":163,"context_line":"                                \u0027manually delete it from the compute \u0027"},{"line_number":164,"context_line":"                                \u0027service.\u0027.format(health[\u0027id\u0027]))"},{"line_number":165,"context_line":"                    return"},{"line_number":166,"context_line":"                # delete the amp right there"},{"line_number":167,"context_line":"                if amp.status is not constants.PENDING_DELETE:"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_60c0547d","line":164,"updated":"2018-10-01 17:24:09.000000000","message":"We could include the srcaddr here as this is a warning level log and the above is debug.","commit_id":"dd214ec27d63f677f12db2fabad20a6ec73f1aac"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e5d6b6a431e6fac0b16b57d7da0d30f798c15b15","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                                \u0027so it cannot be automatically deleted (the \u0027"},{"line_number":162,"context_line":"                                \u0027compute_id is unknown). An operator must \u0027"},{"line_number":163,"context_line":"                                \u0027manually delete it from the compute \u0027"},{"line_number":164,"context_line":"                                \u0027service.\u0027.format(health[\u0027id\u0027]))"},{"line_number":165,"context_line":"                    return"},{"line_number":166,"context_line":"                # delete the amp right there"},{"line_number":167,"context_line":"                if amp.status is not constants.PENDING_DELETE:"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_e016a4a7","line":164,"in_reply_to":"3f79a3b5_60c0547d","updated":"2018-10-01 17:48:43.000000000","message":"Done","commit_id":"dd214ec27d63f677f12db2fabad20a6ec73f1aac"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"91703815f9fae72600f2df651194f3dd79694533","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                \u0027service.\u0027.format(health[\u0027id\u0027]))"},{"line_number":165,"context_line":"                    return"},{"line_number":166,"context_line":"                # delete the amp right there"},{"line_number":167,"context_line":"                if amp.status is not constants.PENDING_DELETE:"},{"line_number":168,"context_line":"                    try:"},{"line_number":169,"context_line":"                        compute \u003d stevedore_driver.DriverManager("},{"line_number":170,"context_line":"                            namespace\u003d\u0027octavia.compute.drivers\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_a03f4c84","line":167,"updated":"2018-10-01 17:24:09.000000000","message":"Do we really want this check or should it just send another delete?\nWhat is the case we would get this far and it not just need to be deleted again?","commit_id":"dd214ec27d63f677f12db2fabad20a6ec73f1aac"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e5d6b6a431e6fac0b16b57d7da0d30f798c15b15","unresolved":false,"context_lines":[{"line_number":164,"context_line":"                                \u0027service.\u0027.format(health[\u0027id\u0027]))"},{"line_number":165,"context_line":"                    return"},{"line_number":166,"context_line":"                # delete the amp right there"},{"line_number":167,"context_line":"                if amp.status is not constants.PENDING_DELETE:"},{"line_number":168,"context_line":"                    try:"},{"line_number":169,"context_line":"                        compute \u003d stevedore_driver.DriverManager("},{"line_number":170,"context_line":"                            namespace\u003d\u0027octavia.compute.drivers\u0027,"}],"source_content_type":"text/x-python","patch_set":21,"id":"3f79a3b5_80557054","line":167,"in_reply_to":"3f79a3b5_a03f4c84","updated":"2018-10-01 17:48:43.000000000","message":"I was playing safe here, but maybe over-complicated.","commit_id":"dd214ec27d63f677f12db2fabad20a6ec73f1aac"}],"octavia/controller/healthmanager/health_manager.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"cff0c43bca5324de00efe0e39a43f63882b171b9","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            try:"},{"line_number":167,"context_line":"                amp_delete \u003d self.amp_repo.get_scheduled_delete_amphora("},{"line_number":168,"context_line":"                    lock_session)"},{"line_number":169,"context_line":"                if amp_delete:"},{"line_number":170,"context_line":"                    lock_session.commit()"},{"line_number":171,"context_line":"            except db_exc.DBDeadlock:"},{"line_number":172,"context_line":"                LOG.debug(\u0027Database reports deadlock. Skipping.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_3d57ae29","line":169,"updated":"2018-08-01 16:51:53.000000000","message":"You are leaving the DB lock in place here as you never rollback the transaction if you don\u0027t get an amp_delete.","commit_id":"df6b82dcb863d628cec36e470ee1ff083b0cdc3c"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"516cf219aba714fced7bdde99db63c5c3fe6155d","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        }"},{"line_number":162,"context_line":"        futs \u003d []"},{"line_number":163,"context_line":"        while not self.dead.is_set():"},{"line_number":164,"context_line":"            lock_session \u003d db_api.get_session(autocommit\u003dFalse)"},{"line_number":165,"context_line":"            amp_delete \u003d None"},{"line_number":166,"context_line":"            try:"},{"line_number":167,"context_line":"                amp_delete \u003d self.amp_repo.get_scheduled_delete_amphora("}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_8909e083","line":164,"updated":"2018-08-01 19:42:56.000000000","message":"Calling this a lock_session is weird, and besides that I don\u0027t think we even need to track it like this -- many other functions have the exact same code as get_scheduled_delete_amphora as far as session handling, and the places that call them simply put \"db_apis.get_session()\" directly in the call. Not to mention, this is only a GET. This session handling code all seems incredibly overly complex.","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"c4ed5b54689dfaf302a4ecb68526e8f9466597f0","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        }"},{"line_number":162,"context_line":"        futs \u003d []"},{"line_number":163,"context_line":"        while not self.dead.is_set():"},{"line_number":164,"context_line":"            lock_session \u003d db_api.get_session(autocommit\u003dFalse)"},{"line_number":165,"context_line":"            amp_delete \u003d None"},{"line_number":166,"context_line":"            try:"},{"line_number":167,"context_line":"                amp_delete \u003d self.amp_repo.get_scheduled_delete_amphora("}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_2b919645","line":164,"in_reply_to":"5f7c97a3_84eea71d","updated":"2018-08-02 09:11:23.000000000","message":"AH, ok I see. I was missing that it really did do an update. But, it still has another session nested, so I think my question stands (and it looks like it\u0027s been changed?)","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"fd28ff2849ee3707f9ee387cd39bb307f0d6487d","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        }"},{"line_number":162,"context_line":"        futs \u003d []"},{"line_number":163,"context_line":"        while not self.dead.is_set():"},{"line_number":164,"context_line":"            lock_session \u003d db_api.get_session(autocommit\u003dFalse)"},{"line_number":165,"context_line":"            amp_delete \u003d None"},{"line_number":166,"context_line":"            try:"},{"line_number":167,"context_line":"                amp_delete \u003d self.amp_repo.get_scheduled_delete_amphora("}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_046137a2","line":164,"in_reply_to":"5f7c97a3_84eea71d","updated":"2018-08-01 20:01:28.000000000","message":"Done","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c542874e5a0cf1789bfd3cda400bc74e8b1eba92","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        }"},{"line_number":162,"context_line":"        futs \u003d []"},{"line_number":163,"context_line":"        while not self.dead.is_set():"},{"line_number":164,"context_line":"            lock_session \u003d db_api.get_session(autocommit\u003dFalse)"},{"line_number":165,"context_line":"            amp_delete \u003d None"},{"line_number":166,"context_line":"            try:"},{"line_number":167,"context_line":"                amp_delete \u003d self.amp_repo.get_scheduled_delete_amphora("}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_84eea71d","line":164,"in_reply_to":"5f7c97a3_8909e083","updated":"2018-08-01 19:53:18.000000000","message":"Yeah, it\u0027s not really just a GET so named incorrectly as well.","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"516cf219aba714fced7bdde99db63c5c3fe6155d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                amp_delete \u003d self.amp_repo.get_scheduled_delete_amphora("},{"line_number":168,"context_line":"                    lock_session)"},{"line_number":169,"context_line":"                if amp_delete:"},{"line_number":170,"context_line":"                    lock_session.commit()"},{"line_number":171,"context_line":"                else:"},{"line_number":172,"context_line":"                    lock_session.rollback()"},{"line_number":173,"context_line":"            except db_exc.DBDeadlock:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_2900cc34","line":170,"updated":"2018-08-01 19:42:56.000000000","message":"What does a commit here even do? This is a GET operation, and the child session in the function we called already opened and closed a session using a context manager...","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"fd28ff2849ee3707f9ee387cd39bb307f0d6487d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                amp_delete \u003d self.amp_repo.get_scheduled_delete_amphora("},{"line_number":168,"context_line":"                    lock_session)"},{"line_number":169,"context_line":"                if amp_delete:"},{"line_number":170,"context_line":"                    lock_session.commit()"},{"line_number":171,"context_line":"                else:"},{"line_number":172,"context_line":"                    lock_session.rollback()"},{"line_number":173,"context_line":"            except db_exc.DBDeadlock:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_a49de36c","line":170,"in_reply_to":"5f7c97a3_2900cc34","updated":"2018-08-01 20:01:28.000000000","message":"Done","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"a19e38ac06cac864f93b1909127f5dc218aec1bc","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                LOG.debug(\u0027Database is requesting a retry. Skipping.\u0027)"},{"line_number":180,"context_line":"                lock_session.rollback()"},{"line_number":181,"context_line":"                amp_delete \u003d None"},{"line_number":182,"context_line":"            except Exception:"},{"line_number":183,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":184,"context_line":"                    lock_session.rollback()"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_8ae1919e","line":182,"updated":"2018-09-12 04:25:15.000000000","message":"DB may be offline or go down while running zombie hunter. See https://review.openstack.org/#/c/600876 for an example on how to handle DB outages.","commit_id":"0fbf73a406eeec448a92ce52589e5e28e23094ee"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"e4c468f09df85ea6b94eb34ec7151d039fc6ed4e","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                LOG.debug(\u0027Database is requesting a retry. Skipping.\u0027)"},{"line_number":180,"context_line":"                lock_session.rollback()"},{"line_number":181,"context_line":"                amp_delete \u003d None"},{"line_number":182,"context_line":"            except Exception:"},{"line_number":183,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":184,"context_line":"                    lock_session.rollback()"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_caf3fe9e","line":182,"in_reply_to":"3f79a3b5_8ae1919e","updated":"2018-09-12 15:43:12.000000000","message":"If said patch lands before mine I will pick it up.","commit_id":"0fbf73a406eeec448a92ce52589e5e28e23094ee"},{"author":{"_account_id":15309,"name":"zhaobo","email":"bzhaojyathousandy@gmail.com","username":"ZhaoBo"},"change_message_id":"6fee226536771b732a744fcd0e3ebd47407a5c83","unresolved":false,"context_lines":[{"line_number":179,"context_line":"                LOG.debug(\u0027Database is requesting a retry. Skipping.\u0027)"},{"line_number":180,"context_line":"                lock_session.rollback()"},{"line_number":181,"context_line":"                amp_delete \u003d None"},{"line_number":182,"context_line":"            except Exception:"},{"line_number":183,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":184,"context_line":"                    lock_session.rollback()"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"            if amp_delete is None:"},{"line_number":187,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":16,"id":"3f79a3b5_3820acf8","line":184,"range":{"start_line":182,"start_character":0,"end_line":184,"end_character":43},"updated":"2018-09-13 18:17:18.000000000","message":"That https://review.openstack.org/#/c/600876 had been merged like Caros side, cover the db outage cases. ;-)","commit_id":"d0a5fe917d1f7b3293508466dd62723907c6bbb0"}],"octavia/db/migration/alembic_migrations/versions/3ddbe3416607_add_schedule_status.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"516cf219aba714fced7bdde99db63c5c3fe6155d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    md \u003d sa.MetaData()"},{"line_number":36,"context_line":"    sa.Table(\u0027operating_status\u0027, md, autoload\u003dTrue, autoload_with\u003dbind)"},{"line_number":37,"context_line":"    op.bulk_insert(md.tables[\u0027operating_status\u0027],"},{"line_number":38,"context_line":"                   [{\u0027name\u0027: consts.SCHEDULE_FOR_DELETE}])"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_4964284d","line":38,"updated":"2018-08-01 19:42:56.000000000","message":"Why do we never add descriptions for these things? I see that we have never actually filled that column, but can we maybe start doing that, and go fix the others to have descriptions later? Else why do we even bother having that column? :/","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"}],"octavia/db/repositories.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c542874e5a0cf1789bfd3cda400bc74e8b1eba92","unresolved":false,"context_lines":[{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"        return amp.to_data_model()"},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"    def get_scheduled_delete_amphora(self, session):"},{"line_number":1035,"context_line":"        \"\"\"Retrieves an amphora scheduled for deleting from the database."},{"line_number":1036,"context_line":""},{"line_number":1037,"context_line":"        :param session: A Sql Alchemy database session."}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_64c4ab94","line":1034,"range":{"start_line":1034,"start_character":8,"end_line":1034,"end_character":36},"updated":"2018-08-01 19:53:18.000000000","message":"This does an update and not just a get.  This needs to be renamed to match what it does.","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"fd28ff2849ee3707f9ee387cd39bb307f0d6487d","unresolved":false,"context_lines":[{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"        return amp.to_data_model()"},{"line_number":1033,"context_line":""},{"line_number":1034,"context_line":"    def get_scheduled_delete_amphora(self, session):"},{"line_number":1035,"context_line":"        \"\"\"Retrieves an amphora scheduled for deleting from the database."},{"line_number":1036,"context_line":""},{"line_number":1037,"context_line":"        :param session: A Sql Alchemy database session."}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_64dfcb0a","line":1034,"range":{"start_line":1034,"start_character":8,"end_line":1034,"end_character":36},"in_reply_to":"5f7c97a3_64c4ab94","updated":"2018-08-01 20:01:28.000000000","message":"Done","commit_id":"c9e581ca3c758d20d5735129cef956d486509b7d"}],"octavia/tests/unit/controller/healthmanager/test_health_manager.py":[{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"a19e38ac06cac864f93b1909127f5dc218aec1bc","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    @mock.patch(\u0027octavia.db.repositories.AmphoraHealthRepository.\u0027"},{"line_number":115,"context_line":"                \u0027get_stale_amphora\u0027)"},{"line_number":116,"context_line":"    @mock.patch(\u0027octavia.db.api.get_session\u0027)"},{"line_number":117,"context_line":"    def test_health_check_delete_amphora("},{"line_number":118,"context_line":"            self, session_mock, get_stale_amp_mock, failover_mock):"},{"line_number":119,"context_line":"        amphora_health \u003d mock.MagicMock()"},{"line_number":120,"context_line":"        amphora_health.amphora_id \u003d AMPHORA_ID"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_eafda53b","line":117,"updated":"2018-09-12 04:25:15.000000000","message":"ditto. https://review.openstack.org/#/c/600876/5/octavia/tests/unit/controller/healthmanager/test_health_manager.py","commit_id":"0fbf73a406eeec448a92ce52589e5e28e23094ee"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"e4c468f09df85ea6b94eb34ec7151d039fc6ed4e","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    @mock.patch(\u0027octavia.db.repositories.AmphoraHealthRepository.\u0027"},{"line_number":115,"context_line":"                \u0027get_stale_amphora\u0027)"},{"line_number":116,"context_line":"    @mock.patch(\u0027octavia.db.api.get_session\u0027)"},{"line_number":117,"context_line":"    def test_health_check_delete_amphora("},{"line_number":118,"context_line":"            self, session_mock, get_stale_amp_mock, failover_mock):"},{"line_number":119,"context_line":"        amphora_health \u003d mock.MagicMock()"},{"line_number":120,"context_line":"        amphora_health.amphora_id \u003d AMPHORA_ID"}],"source_content_type":"text/x-python","patch_set":15,"id":"3f79a3b5_aa3b2237","line":117,"in_reply_to":"3f79a3b5_eafda53b","updated":"2018-09-12 15:43:12.000000000","message":"ditto","commit_id":"0fbf73a406eeec448a92ce52589e5e28e23094ee"}],"releasenotes/notes/zombie_amp-1b435eb66643dab8.yaml":[{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a287781fd8f9b78af1eb8f981c81999aecf99f0c","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This will automatically nova delete zombie amphora when they"},{"line_number":5,"context_line":"    are detected by Octavia. Zombie amphora are amphora which"},{"line_number":6,"context_line":"    report health messages but appear DELETED in Octavia\u0027s "},{"line_number":7,"context_line":"    database. A common cause for such amphora is a reboot of "},{"line_number":8,"context_line":"    a server without prior failing over amphora to a new one"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_54026171","line":5,"range":{"start_line":5,"start_character":44,"end_line":5,"end_character":47},"updated":"2018-08-28 21:33:31.000000000","message":"is","commit_id":"25923f39d29179dff354b6d62e99ff11ecdad834"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a287781fd8f9b78af1eb8f981c81999aecf99f0c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This will automatically nova delete zombie amphora when they"},{"line_number":5,"context_line":"    are detected by Octavia. Zombie amphora are amphora which"},{"line_number":6,"context_line":"    report health messages but appear DELETED in Octavia\u0027s "},{"line_number":7,"context_line":"    database. A common cause for such amphora is a reboot of "},{"line_number":8,"context_line":"    a server without prior failing over amphora to a new one"},{"line_number":9,"context_line":"    and/or having nova configured to restore vms upon reboot."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_f4f60d91","line":6,"range":{"start_line":6,"start_character":58,"end_line":6,"end_character":59},"updated":"2018-08-28 21:33:31.000000000","message":"nit: whitespace","commit_id":"25923f39d29179dff354b6d62e99ff11ecdad834"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"a287781fd8f9b78af1eb8f981c81999aecf99f0c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    This will automatically nova delete zombie amphora when they"},{"line_number":5,"context_line":"    are detected by Octavia. Zombie amphora are amphora which"},{"line_number":6,"context_line":"    report health messages but appear DELETED in Octavia\u0027s "},{"line_number":7,"context_line":"    database. A common cause for such amphora is a reboot of "},{"line_number":8,"context_line":"    a server without prior failing over amphora to a new one"},{"line_number":9,"context_line":"    and/or having nova configured to restore vms upon reboot."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_b4f09593","line":7,"range":{"start_line":7,"start_character":60,"end_line":7,"end_character":61},"updated":"2018-08-28 21:33:31.000000000","message":"nit: whitespace","commit_id":"25923f39d29179dff354b6d62e99ff11ecdad834"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"a19e38ac06cac864f93b1909127f5dc218aec1bc","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This will automatically nova delete zombie amphora when they"},{"line_number":5,"context_line":"    are detected by Octavia. Zombie amphora are amphora which"},{"line_number":6,"context_line":"    report health messages but appear DELETED in Octavia\u0027s "},{"line_number":7,"context_line":"    database. A common cause for such amphora is a reboot of "},{"line_number":8,"context_line":"    a server without prior failing over amphora to a new one"},{"line_number":9,"context_line":"    and/or having nova configured to restore vms upon reboot."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3f79a3b5_4abb7974","line":6,"updated":"2018-09-12 04:25:15.000000000","message":"nit: trailing whitespace","commit_id":"0fbf73a406eeec448a92ce52589e5e28e23094ee"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"e4c468f09df85ea6b94eb34ec7151d039fc6ed4e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This will automatically nova delete zombie amphora when they"},{"line_number":5,"context_line":"    are detected by Octavia. Zombie amphora are amphora which"},{"line_number":6,"context_line":"    report health messages but appear DELETED in Octavia\u0027s "},{"line_number":7,"context_line":"    database. A common cause for such amphora is a reboot of "},{"line_number":8,"context_line":"    a server without prior failing over amphora to a new one"},{"line_number":9,"context_line":"    and/or having nova configured to restore vms upon reboot."}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3f79a3b5_ca21befe","line":6,"in_reply_to":"3f79a3b5_4abb7974","updated":"2018-09-12 15:43:12.000000000","message":"Done","commit_id":"0fbf73a406eeec448a92ce52589e5e28e23094ee"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"a19e38ac06cac864f93b1909127f5dc218aec1bc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    This will automatically nova delete zombie amphora when they"},{"line_number":5,"context_line":"    are detected by Octavia. Zombie amphora are amphora which"},{"line_number":6,"context_line":"    report health messages but appear DELETED in Octavia\u0027s "},{"line_number":7,"context_line":"    database. A common cause for such amphora is a reboot of "},{"line_number":8,"context_line":"    a server without prior failing over amphora to a new one"},{"line_number":9,"context_line":"    and/or having nova configured to restore vms upon reboot."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3f79a3b5_6ac0b5e1","line":7,"updated":"2018-09-12 04:25:15.000000000","message":"nit: trailing whitespace","commit_id":"0fbf73a406eeec448a92ce52589e5e28e23094ee"},{"author":{"_account_id":10850,"name":"German Eichberger","email":"german.eichberger@gmail.com","username":"german"},"change_message_id":"e4c468f09df85ea6b94eb34ec7151d039fc6ed4e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    This will automatically nova delete zombie amphora when they"},{"line_number":5,"context_line":"    are detected by Octavia. Zombie amphora are amphora which"},{"line_number":6,"context_line":"    report health messages but appear DELETED in Octavia\u0027s "},{"line_number":7,"context_line":"    database. A common cause for such amphora is a reboot of "},{"line_number":8,"context_line":"    a server without prior failing over amphora to a new one"},{"line_number":9,"context_line":"    and/or having nova configured to restore vms upon reboot."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":15,"id":"3f79a3b5_6a1e6abc","line":7,"in_reply_to":"3f79a3b5_6ac0b5e1","updated":"2018-09-12 15:43:12.000000000","message":"Done","commit_id":"0fbf73a406eeec448a92ce52589e5e28e23094ee"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"91703815f9fae72600f2df651194f3dd79694533","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    This will automatically nova delete zombie amphora when they"},{"line_number":5,"context_line":"    are detected by Octavia. Zombie amphorae are amphorae which"},{"line_number":6,"context_line":"    report health messages but appear DELETED in Octavia\u0027s"},{"line_number":7,"context_line":"    database. A common cause for such amphora is a reboot of"},{"line_number":8,"context_line":"    a server without prior failing over amphora to a new one"},{"line_number":9,"context_line":"    and/or having nova configured to restore vms upon reboot."},{"line_number":10,"context_line":"other:"},{"line_number":11,"context_line":"  - |"},{"line_number":12,"context_line":"    Processing zombie amphora is already expensive and this adds"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3f79a3b5_bd76950b","line":9,"range":{"start_line":7,"start_character":14,"end_line":9,"end_character":61},"updated":"2018-10-01 17:24:09.000000000","message":"I still don\u0027t like this as I don\u0027t think this is necessarily true or worded to communicate the issue with nova.  I might just drop this sentence.","commit_id":"dd214ec27d63f677f12db2fabad20a6ec73f1aac"},{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"e5d6b6a431e6fac0b16b57d7da0d30f798c15b15","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    This will automatically nova delete zombie amphora when they"},{"line_number":5,"context_line":"    are detected by Octavia. Zombie amphorae are amphorae which"},{"line_number":6,"context_line":"    report health messages but appear DELETED in Octavia\u0027s"},{"line_number":7,"context_line":"    database. A common cause for such amphora is a reboot of"},{"line_number":8,"context_line":"    a server without prior failing over amphora to a new one"},{"line_number":9,"context_line":"    and/or having nova configured to restore vms upon reboot."},{"line_number":10,"context_line":"other:"},{"line_number":11,"context_line":"  - |"},{"line_number":12,"context_line":"    Processing zombie amphora is already expensive and this adds"}],"source_content_type":"text/x-yaml","patch_set":21,"id":"3f79a3b5_c0c4c810","line":9,"range":{"start_line":7,"start_character":14,"end_line":9,"end_character":61},"in_reply_to":"3f79a3b5_bd76950b","updated":"2018-10-01 17:48:43.000000000","message":"Done","commit_id":"dd214ec27d63f677f12db2fabad20a6ec73f1aac"}]}
