Juan Hernandez has posted comments on this change. Change subject: packaging: [DO NOT MERGE] Handling active tasks during upgrade ......................................................................
Patch Set 1: (8 inline comments) .................................................... File packaging/fedora/setup/engine-upgrade.py Line 17: Line 18: # Consts Line 19: Line 20: WAIT_PERIOD = 60 Line 21: MAX_CYCLES = 20 Can we make explicit the fact that we use this for maintenance mode? Something like MAINTENANCE_TASKS_WAIT_PERIOD and MAINTENANCE_TASKS_CYCLES, or/and a comment explaining it. Line 22: Line 23: #TODO: Work with a real list here Line 24: RPM_LIST = """ Line 25: ovirt-engine Line 63: #MSGS Line 64: MSG_STOP_RUNNING_TASKS = "Info: There are following running tasks and compensations \ Line 65: found in the manager:\n\nTasks:\n%s\n\nCompensations:\n%s\n\n\ Line 66: Would you like to proceed with the upgrade (and try to stop tasks automatically)?\n Answering \ Line 67: 'no' will stop the upgrade." Not for this patch, but we should start to use the "textwrap" python module to avoid manually wrapping text. Line 68: MSG_RUNNING_TASKS_CLEARED = "Info: no running tasks found. Continue" Line 69: MSG_ERROR_USER_NOT_ROOT = "Error: insufficient permissions for user %s, you must run with user root." Line 70: MSG_NO_ROLLBACK = "Error: Current installation " Line 71: MSG_RC_ERROR = "Return Code is not zero" Line 747: True, Line 748: MSG_ERROR_CONNECT_DB Line 749: ) Line 750: Line 751: def getRunningTasks(): Would it make sense to have to separate methods? One to get the running tasks and another one to get compensations. That way you don't have to return a dictionary, but a list, and that way you don't need the "async_tasks" and "compensation" keys. Line 752: Line 753: runningTasks = {} Line 754: Line 755: # Get async tasks: Line 781: return runningTasks Line 782: Line 783: def checkRunningTasks(): Line 784: # Find running tasks first Line 785: runningTasks = getRunningTasks() compensations = getCompensations() Line 786: Line 787: if len(runningTasks['async_tasks']) > 0 or \ Line 788: len(runningTasks['compensations']) > 0: Line 789: Line 784: # Find running tasks first Line 785: runningTasks = getRunningTasks() Line 786: Line 787: if len(runningTasks['async_tasks']) > 0 or \ Line 788: len(runningTasks['compensations']) > 0: if runningTasks or compensations: Line 789: Line 790: try: Line 791: # TODO: update runningTasks names/presentation and compensations Line 792: answerYes = utils.askYesNo(MSG_STOP_RUNNING_TASKS % Line 804: # Pull tasks in a loop for some time Line 805: # WAIT_PERIOD = 60 (seconds, between trials) Line 806: # MAX_CYCLES = 20 (how many times to try) Line 807: count = 0 Line 808: while runningTasks > 0 and count < MAX_CYCLES: The expression "runningTasks > 0" always evaluates to True. I guess you meant just "runningTasks" or "len(runningTasks) > 0". Line 809: time.sleep(WAIT_PERIOD) Line 810: runningTasks = getRunningTasks() Line 811: count += 1 Line 812: Line 810: runningTasks = getRunningTasks() Line 811: count += 1 Line 812: Line 813: # Restore normal configuration Line 814: restoreNormalMode() This action should probably go in a "finally" block, so that we restore the mode even if there are exceptions while we wait for the tasks and compensations to be cleaned. Line 815: Line 816: # Check if there are still running tasks Line 817: if len(runningTasks) > 0: Line 818: # There are still tasks running, so ask user what to do Line 816: # Check if there are still running tasks Line 817: if len(runningTasks) > 0: Line 818: # There are still tasks running, so ask user what to do Line 819: raise Exception("There are still running tasks. Please make sure \ Line 820: that there are no running before you continue. \ I miss something in this message ".. there are no running *what* before ...". Line 821: Stopping upgrade.") Line 822: Line 823: Line 824: except: -- To view, visit http://gerrit.ovirt.org/8740 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I90abb3d1e6ad0ac5557485e40064e811fc87f491 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alex Lourie <alou...@redhat.com> Gerrit-Reviewer: Alon Bar-Lev <alo...@redhat.com> Gerrit-Reviewer: Barak Azulay <bazu...@redhat.com> Gerrit-Reviewer: Eli Mesika <emes...@redhat.com> Gerrit-Reviewer: Juan Hernandez <juan.hernan...@redhat.com> Gerrit-Reviewer: Kiril Nesenko <knese...@redhat.com> Gerrit-Reviewer: Moran Goldboim <mgold...@redhat.com> Gerrit-Reviewer: Ofer Schreiber <oschr...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches