)]}'
{"fenix/db/sqlalchemy/api.py":[{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"556cff6feff2d45a9609771c8a91afb2f8468b9a","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        downloads \u003d _download_get_all(session, session_id)"},{"line_number":165,"context_line":"        if downloads:"},{"line_number":166,"context_line":"            for download in downloads:"},{"line_number":167,"context_line":"                session.delete(download)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        hosts \u003d _hosts_get(session, session_id)"},{"line_number":170,"context_line":"        if hosts:"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_1627f8b5","line":167,"range":{"start_line":167,"start_character":16,"end_line":167,"end_character":23},"updated":"2019-05-06 14:28:33.000000000","message":"This was just bug","commit_id":"228b050a34daffdde8f2b9b32d86c81cc0c99b9c"}],"fenix/workflow/workflows/default.py":[{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"ce322b29bcbffe41320207504688fcd48ab01583","unresolved":false,"context_lines":[{"line_number":609,"context_line":"        last_migration_status \u003d \"active\""},{"line_number":610,"context_line":"        try:"},{"line_number":611,"context_line":"            server.live_migrate()"},{"line_number":612,"context_line":"            retries \u003d 0"},{"line_number":613,"context_line":"            migrate_retry \u003d 0"},{"line_number":614,"context_line":"            while retries !\u003d 120:"},{"line_number":615,"context_line":"                time.sleep(5)"},{"line_number":616,"context_line":"                server \u003d self.nova.servers.get(server_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_5f37a6e4","line":613,"range":{"start_line":612,"start_character":0,"end_line":613,"end_character":29},"updated":"2019-05-08 05:22:47.000000000","message":"So \"retries\" is for the whole process and \"migrate_retry\" for migration? Btw, it should be migrate_retries IMO.","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"ad971eaca371c06a96dfd518f11d75d760fc6fca","unresolved":false,"context_lines":[{"line_number":609,"context_line":"        last_migration_status \u003d \"active\""},{"line_number":610,"context_line":"        try:"},{"line_number":611,"context_line":"            server.live_migrate()"},{"line_number":612,"context_line":"            retries \u003d 0"},{"line_number":613,"context_line":"            migrate_retry \u003d 0"},{"line_number":614,"context_line":"            while retries !\u003d 120:"},{"line_number":615,"context_line":"                time.sleep(5)"},{"line_number":616,"context_line":"                server \u003d self.nova.servers.get(server_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_7fcceabb","line":613,"range":{"start_line":612,"start_character":0,"end_line":613,"end_character":29},"in_reply_to":"dfbec78f_5f37a6e4","updated":"2019-05-08 06:15:10.000000000","message":"Yes, retries is kind of to wait this succeed in the first place. migrate_retries surely better for the migrate_retry and it is the \"real\" retry for live migrating.","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"ce322b29bcbffe41320207504688fcd48ab01583","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            server.live_migrate()"},{"line_number":612,"context_line":"            retries \u003d 0"},{"line_number":613,"context_line":"            migrate_retry \u003d 0"},{"line_number":614,"context_line":"            while retries !\u003d 120:"},{"line_number":615,"context_line":"                time.sleep(5)"},{"line_number":616,"context_line":"                server \u003d self.nova.servers.get(server_id)"},{"line_number":617,"context_line":"                host \u003d str(server.__dict__.get(\u0027OS-EXT-SRV-ATTR:host\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_9f0c3e3c","line":614,"range":{"start_line":614,"start_character":29,"end_line":614,"end_character":32},"updated":"2019-05-08 05:22:47.000000000","message":"just random?","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"ad971eaca371c06a96dfd518f11d75d760fc6fca","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            server.live_migrate()"},{"line_number":612,"context_line":"            retries \u003d 0"},{"line_number":613,"context_line":"            migrate_retry \u003d 0"},{"line_number":614,"context_line":"            while retries !\u003d 120:"},{"line_number":615,"context_line":"                time.sleep(5)"},{"line_number":616,"context_line":"                server \u003d self.nova.servers.get(server_id)"},{"line_number":617,"context_line":"                host \u003d str(server.__dict__.get(\u0027OS-EXT-SRV-ATTR:host\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_df3ab696","line":614,"range":{"start_line":614,"start_character":29,"end_line":614,"end_character":32},"in_reply_to":"dfbec78f_9f0c3e3c","updated":"2019-05-08 06:15:10.000000000","message":"I think we should have some default configuration over this. Nova has sure its own timeout. this \"random\" is 600sec in practice and it doesn\u0027t look good as it is.","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"ce322b29bcbffe41320207504688fcd48ab01583","unresolved":false,"context_lines":[{"line_number":612,"context_line":"            retries \u003d 0"},{"line_number":613,"context_line":"            migrate_retry \u003d 0"},{"line_number":614,"context_line":"            while retries !\u003d 120:"},{"line_number":615,"context_line":"                time.sleep(5)"},{"line_number":616,"context_line":"                server \u003d self.nova.servers.get(server_id)"},{"line_number":617,"context_line":"                host \u003d str(server.__dict__.get(\u0027OS-EXT-SRV-ATTR:host\u0027))"},{"line_number":618,"context_line":"                vm_status \u003d str(server.__dict__.get(\u0027status\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_df2b967f","line":615,"range":{"start_line":615,"start_character":16,"end_line":615,"end_character":29},"updated":"2019-05-08 05:22:47.000000000","message":"I get what you\u0027re doing here. Could you please add some note here before we can have a more stable solution.","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"ad971eaca371c06a96dfd518f11d75d760fc6fca","unresolved":false,"context_lines":[{"line_number":612,"context_line":"            retries \u003d 0"},{"line_number":613,"context_line":"            migrate_retry \u003d 0"},{"line_number":614,"context_line":"            while retries !\u003d 120:"},{"line_number":615,"context_line":"                time.sleep(5)"},{"line_number":616,"context_line":"                server \u003d self.nova.servers.get(server_id)"},{"line_number":617,"context_line":"                host \u003d str(server.__dict__.get(\u0027OS-EXT-SRV-ATTR:host\u0027))"},{"line_number":618,"context_line":"                vm_status \u003d str(server.__dict__.get(\u0027status\u0027))"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_7f414a0b","line":615,"range":{"start_line":615,"start_character":16,"end_line":615,"end_character":29},"in_reply_to":"dfbec78f_df2b967f","updated":"2019-05-08 06:15:10.000000000","message":"Similar is in migration side. You need to \"poll\" when migration is done. So I do not know if any better solution really. Surely could poll more often.","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"ce322b29bcbffe41320207504688fcd48ab01583","unresolved":false,"context_lines":[{"line_number":640,"context_line":"                                  \u00275 retries\u0027"},{"line_number":641,"context_line":"                                  % server_id)"},{"line_number":642,"context_line":"                        return False"},{"line_number":643,"context_line":"                    time.sleep(2 * (migrate_retry + 5))"},{"line_number":644,"context_line":"                    LOG.info(\u0027instance %s live migration failed, retry\u0027"},{"line_number":645,"context_line":"                             % server_id)"},{"line_number":646,"context_line":"                    server.live_migrate()"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_ff353adb","line":643,"range":{"start_line":643,"start_character":20,"end_line":643,"end_character":55},"updated":"2019-05-08 05:22:47.000000000","message":"I\u0027m not sure how it is like this.","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"ad971eaca371c06a96dfd518f11d75d760fc6fca","unresolved":false,"context_lines":[{"line_number":640,"context_line":"                                  \u00275 retries\u0027"},{"line_number":641,"context_line":"                                  % server_id)"},{"line_number":642,"context_line":"                        return False"},{"line_number":643,"context_line":"                    time.sleep(2 * (migrate_retry + 5))"},{"line_number":644,"context_line":"                    LOG.info(\u0027instance %s live migration failed, retry\u0027"},{"line_number":645,"context_line":"                             % server_id)"},{"line_number":646,"context_line":"                    server.live_migrate()"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_1f504ed4","line":643,"range":{"start_line":643,"start_character":20,"end_line":643,"end_character":55},"in_reply_to":"dfbec78f_ff353adb","updated":"2019-05-08 06:15:10.000000000","message":"If I would have the testing with bigger cloud, would know better. Anyhow, normally Nova let\u0027s one live migration at a time and got some \"random\" error migrating when tested. As retry was super first before this, I tried to make it longer interval before next try if previously failed. This would at least need comment.","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"ce322b29bcbffe41320207504688fcd48ab01583","unresolved":false,"context_lines":[{"line_number":644,"context_line":"                    LOG.info(\u0027instance %s live migration failed, retry\u0027"},{"line_number":645,"context_line":"                             % server_id)"},{"line_number":646,"context_line":"                    server.live_migrate()"},{"line_number":647,"context_line":"                    retries \u003d 0"},{"line_number":648,"context_line":"                    migrate_retry \u003d migrate_retry + 1"},{"line_number":649,"context_line":"                elif migration.status !\u003d last_migration_status:"},{"line_number":650,"context_line":"                    LOG.info(\u0027instance %s live migration status changed: %s\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_1f312eed","line":647,"range":{"start_line":647,"start_character":20,"end_line":647,"end_character":31},"updated":"2019-05-08 05:22:47.000000000","message":"?","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"ad971eaca371c06a96dfd518f11d75d760fc6fca","unresolved":false,"context_lines":[{"line_number":644,"context_line":"                    LOG.info(\u0027instance %s live migration failed, retry\u0027"},{"line_number":645,"context_line":"                             % server_id)"},{"line_number":646,"context_line":"                    server.live_migrate()"},{"line_number":647,"context_line":"                    retries \u003d 0"},{"line_number":648,"context_line":"                    migrate_retry \u003d migrate_retry + 1"},{"line_number":649,"context_line":"                elif migration.status !\u003d last_migration_status:"},{"line_number":650,"context_line":"                    LOG.info(\u0027instance %s live migration status changed: %s\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_7f5aaaf3","line":647,"range":{"start_line":647,"start_character":20,"end_line":647,"end_character":31},"in_reply_to":"dfbec78f_1f312eed","updated":"2019-05-08 06:15:10.000000000","message":"retries is for a single call for live_migrate to check if it goes through. When you try live_migrate again, we start from the beginning (\u003d0). This should be renamed to indicate it is a \"wait\" and not retry.","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"ce322b29bcbffe41320207504688fcd48ab01583","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                last_vm_status \u003d vm_status"},{"line_number":655,"context_line":"            LOG.error(\u0027instance %s live migration did not finish in %s, \u0027"},{"line_number":656,"context_line":"                      \u0027state: %s\u0027 % (server_id, retries * 5, instance.state))"},{"line_number":657,"context_line":"            return False"},{"line_number":658,"context_line":"        except Exception as e:"},{"line_number":659,"context_line":"            LOG.error(\u0027server %s live migration failed, Exception\u003d%s\u0027 %"},{"line_number":660,"context_line":"                      (server_id, e))"},{"line_number":661,"context_line":"            return False"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    def migrate_server(self, instance):"},{"line_number":664,"context_line":"        # TBD this method should be enhanced for errors and to have failed"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_df795693","line":661,"range":{"start_line":657,"start_character":0,"end_line":661,"end_character":24},"updated":"2019-05-08 05:22:47.000000000","message":"It will return False if it does not finish within the while loop so we can just return False outside all of these line:\n\n    LOG.error...\nexcept Exception as e:\n    Log.error...\n\nreturn False","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"ad971eaca371c06a96dfd518f11d75d760fc6fca","unresolved":false,"context_lines":[{"line_number":654,"context_line":"                last_vm_status \u003d vm_status"},{"line_number":655,"context_line":"            LOG.error(\u0027instance %s live migration did not finish in %s, \u0027"},{"line_number":656,"context_line":"                      \u0027state: %s\u0027 % (server_id, retries * 5, instance.state))"},{"line_number":657,"context_line":"            return False"},{"line_number":658,"context_line":"        except Exception as e:"},{"line_number":659,"context_line":"            LOG.error(\u0027server %s live migration failed, Exception\u003d%s\u0027 %"},{"line_number":660,"context_line":"                      (server_id, e))"},{"line_number":661,"context_line":"            return False"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"    def migrate_server(self, instance):"},{"line_number":664,"context_line":"        # TBD this method should be enhanced for errors and to have failed"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_9fe0befc","line":661,"range":{"start_line":657,"start_character":0,"end_line":661,"end_character":24},"in_reply_to":"dfbec78f_df795693","updated":"2019-05-08 06:15:10.000000000","message":"You are right. One bad here is that it might still succeed when we are not checking anymore. Surely I still cannot stay in the loop forever as blocking progress. I think there was Nova BP in Train, so we can force migration to complete after a certain time.","commit_id":"b6882f43d9dec27624a21afb4049cab4d2aafd6e"},{"author":{"_account_id":27068,"name":"Trinh Nguyen","email":"dangtrinhnt@gmail.com","username":"dangtrinhnt"},"change_message_id":"1d63b87404db152aaf01f03f9d6296b724a6d235","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                        return False"},{"line_number":571,"context_line":"                    self.notify_action_done(project, instance)"},{"line_number":572,"context_line":"                else:"},{"line_number":573,"context_line":"                    # TBD LIVE_MIGRATE not supported"},{"line_number":574,"context_line":"                    raise Exception(\u0027%s: instance %s action \u0027"},{"line_number":575,"context_line":"                                    \u0027%s not supported\u0027 %"},{"line_number":576,"context_line":"                                    (self.session_id, instance.instance_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfbec78f_4dd60d52","line":573,"range":{"start_line":573,"start_character":19,"end_line":573,"end_character":52},"updated":"2019-05-10 02:46:45.000000000","message":"I just noticed this. Should be removed?","commit_id":"1f5d256fbe07f4512855c8d88f9b9f4ad8c2fb40"},{"author":{"_account_id":15834,"name":"Tomi Juvonen","email":"tomi.juvonen@nokia.com","username":"tojuvone"},"change_message_id":"f1c4ea49bbdfce9445c6ed879e4fe92258bfaa59","unresolved":false,"context_lines":[{"line_number":570,"context_line":"                        return False"},{"line_number":571,"context_line":"                    self.notify_action_done(project, instance)"},{"line_number":572,"context_line":"                else:"},{"line_number":573,"context_line":"                    # TBD LIVE_MIGRATE not supported"},{"line_number":574,"context_line":"                    raise Exception(\u0027%s: instance %s action \u0027"},{"line_number":575,"context_line":"                                    \u0027%s not supported\u0027 %"},{"line_number":576,"context_line":"                                    (self.session_id, instance.instance_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfbec78f_4af9fd4a","line":573,"range":{"start_line":573,"start_character":19,"end_line":573,"end_character":52},"in_reply_to":"dfbec78f_4dd60d52","updated":"2019-05-11 18:45:58.000000000","message":"Indeed :)","commit_id":"1f5d256fbe07f4512855c8d88f9b9f4ad8c2fb40"}]}
