Alon Bar-Lev has posted comments on this change.
Change subject: [WIP] packaging: added DB validation functions
......................................................................
Patch Set 6: (23 inline comments)
....................................................
File packaging/setup/ovirt_engine_setup/constants.py
Line 906: )
Line 907: def CLEAR_TASKS_WAIT_PERIOD(self):
Line 908: return 'OVESETUP_ASYNC/clearTasksWait'
Line 909:
Line 910: ASYNC_TASKS_MAP = {
this does not belong here, please move it to the plugin.
Line 911: '1': [
Line 912: 'AddVmCommand',
Line 913: 'Adding a virtual machine',
Line 914: ],
Line 1020: 'MoveDisk',
Line 1021: 'Move Disk',
Line 1022: ],
Line 1023: }
Line 1024:
please always keep two spaces.
....................................................
File packaging/setup/plugins/ovirt-engine-setup/upgrade/asynctasks.py
Line 47: self._parent = parent
Line 48: self._origTimeout = 0
Line 49: self._dbstatement = dbstatement
Line 50:
Line 51: def _setEngineMode(self, active=True):
better use maintenance=True less confusing within the context of the code.
Line 52: mode = (
Line 53: 'ACTIVE' if active
Line 54: else 'MAINTENANCE'
Line 55: )
Line 85: def __enter__(self):
Line 86: self._origTimeout = self._dbstatement.getVDCOption(
Line 87: name='AsyncTaskZombieTaskLifeInMinutes',
Line 88: )
Line 89: self._dbstatement.updateVDCOption(
please collapse this into the setEngineMode with timeout= parameter.
Line 90: {
Line 91: 'name': 'AsyncTaskZombieTaskLifeInMinutes',
Line 92: 'value': 0,
Line 93: },
Line 123: def __init__(self, context):
Line 124: super(Plugin, self).__init__(context=context)
Line 125: self._enabled = False
Line 126:
Line 127: def _clearZombieTasks(self):
please move private methods before __init__
Line 128: rc, tasks, stderr = self.execute(
Line 129: [
Line 130: osetupcons.FileLocations.OVIRT_ENGINE_TASKCLEANER,
Line 131: '-u', self.environment[osetupcons.DBEnv.USER],
Line 139: ],
Line 140: raiseOnError=False,
Line 141: )
Line 142:
Line 143: if rc > 1:
and what if rc == 1? shouldn't we do something?
Line 144: raise RuntimeError(
Line 145: _(
Line 146: 'Failed to clear zombie tasks. Please access
support '
Line 147: 'in attempt to resolve problem '
Line 165: )[0]
Line 166:
Line 167: return ''.join(
Line 168: [
Line 169: '\n---- Task ID: {task_id:30} ------- \n'
why space before \n? Why leading \n? can't you join by '\n' to have same effect?
Line 170: 'Task Name: {task_name:30}\n'
Line 171: 'Task Description: {task_desc:30}\n'
Line 172: 'Started at: {started_at:30}\n'
Line 173: 'DC Name: {name:30}\n'.format(
Line 167: return ''.join(
Line 168: [
Line 169: '\n---- Task ID: {task_id:30} ------- \n'
Line 170: 'Task Name: {task_name:30}\n'
Line 171: 'Task Description: {task_desc:30}\n'
better to indent so:
Task Name: XXXXXXXXXXXXXXXxx
Description: YYYYYYYYYYYYYYY
Started at: ZZZZZZZZZZZZZZZZ
Line 172: 'Started at: {started_at:30}\n'
Line 173: 'DC Name: {name:30}\n'.format(
Line 174: task_id=entry['task_id'],
Line 175: task_name=self.environment[
Line 169: '\n---- Task ID: {task_id:30} ------- \n'
Line 170: 'Task Name: {task_name:30}\n'
Line 171: 'Task Description: {task_desc:30}\n'
Line 172: 'Started at: {started_at:30}\n'
Line 173: 'DC Name: {name:30}\n'.format(
please localize
Line 174: task_id=entry['task_id'],
Line 175: task_name=self.environment[
Line 176: osetupcons.AsyncTasksEnv.ASYNC_TASKS_MAP
Line 177: ][entry['action_type']][0],
Line 193: from business_entity_snapshot
Line 194: """,
Line 195: ownConnection=True,
Line 196: transaction=False,
Line 197: )[0]
how can it be more than one if you get only 1st line?
Line 198:
Line 199: return '\n'.join(
Line 200: [
Line 201: '{command_type:30} {entity_type:30}'.format(**entry)
Line 209: name='OVESETUP_SHOW_RUNNING_TASKS',
Line 210: note=_(
Line 211: 'The following system tasks have been '
Line 212: 'found running in the system:\n'
Line 213: '{tasks}\n'
please separate tasks note from compensations note.
Line 214: '{compensations}\n'
Line 215: 'Would you like to proceed '
Line 216: 'and try to stop these tasks automatically?\n'
Line 217: '(Answering "no" will stop the upgrade (@VALUES@) '
Line 225: _(
Line 226: 'There are still following tasks running'
Line 227: 'in the system:\n'
Line 228: '{tasks}\n'
Line 229: '{compensations}\n'
there is no need to repeat the message, you can just throw exception: 'Upgrade
cannot be completed, tasks or compensation still running'.
Line 230: 'Please make sure that there are no '
Line 231: 'running system tasks before you '
Line 232: 'continue. Stopping upgrade.'
Line 233: ).format(
Line 244: 'Press Ctrl+C to interrupt. '
Line 245: ).format(
Line 246: cleanup_wait=self.environment[
Line 247: osetupcons.AsyncTasksEnv.CLEAR_TASKS_WAIT_PERIOD
Line 248: ]
can we print how many running?
Line 249: )
Line 250: )
Line 251: time.sleep(
Line 252: self.environment[
Line 260: self._getRunningTasks(dbstatement),
Line 261: self._getCompensations(dbstatement),
Line 262: )
Line 263:
Line 264: def _clearRunningTasks(self):
this function does not clear... please collapse with _infoStoppingTasks.
Line 265: dbstatement = database.Statement(self.environment)
Line 266: with self._engineInMaintenance(
Line 267: dbstatement=dbstatement,
Line 268: parent=self,
Line 266: with self._engineInMaintenance(
Line 267: dbstatement=dbstatement,
Line 268: parent=self,
Line 269: ):
Line 270: while True:
this loop should be within _infoStoppingTasks renamed to waitFor...
Line 271: try:
Line 272: runningTasks = self._getRunningTasks(dbstatement)
Line 273: compensations =
self._getCompensations(dbstatement)
Line 274: if runningTasks or compensations:
Line 293:
Line 294: @plugin.event(
Line 295: stage=plugin.Stages.STAGE_SETUP,
Line 296: )
Line 297: def _setup(self):
better do this at validation, so you have this set on customization cli
Line 298: self._enabled = self.environment[
Line 299: osetupcons.AsyncTasksEnv.CLEAR_TASKS
Line 300: ] is True
Line 301:
Line 302: @plugin.event(
Line 303: # NOTE:
Line 304: # this must run before the package update
Line 305: # to prevent entering an upgrade flow when DB is in
Line 306: # an inconsistent state.
comment is useless validation is always before package update.
Line 307: stage=plugin.Stages.STAGE_VALIDATION,
Line 308: condition=lambda self: self._enabled,
Line 309: )
Line 310: def _validation(self):
Line 309: )
Line 310: def _validation(self):
Line 311: runningTasks, compensations = self._checkRunningTasks()
Line 312: if runningTasks or compensations:
Line 313: self._askUserToStopTasks(runningTasks, compensations)
I think we can wait here for tasks before continue.
Line 314:
Line 315: @plugin.event(
Line 316: # NOTE:
Line 317: # this must run before the package update
Line 320: stage=plugin.Stages.STAGE_EARLY_MISC,
Line 321: condition=lambda self: self._enabled,
Line 322: )
Line 323: def _misc(self):
Line 324:
no need for space line.
please add log info before each stage
Line 325: self._clearZombieTasks()
Line 326: self._clearRunningTasks()
Line 327:
Line 328:
....................................................
File packaging/setup/plugins/ovirt-engine-setup/upgrade/dbvalidations.py
Line 74: rc, stdout, stderr = self._dbUtil()
Line 75: if rc != 0:
Line 76: raise RuntimeError(
Line 77: _(
Line 78: 'Error: failed checking DB:\n'
no need for Error.
Line 79: '{output}\n'.format(
Line 80: output=stdout,
Line 81: )
Line 82: )
Line 105: ],
Line 106: condition=lambda self: self._enabled,
Line 107: )
Line 108: def _customization(self):
Line 109: violations, issues_found = self._checkDb()
please add logger.info before.
Line 110: if issues_found:
Line 111: if self.environment[
Line 112: osetupcons.DBEnv.FIX_DB_VIOLATIONS
Line 113: ] is None:
Line 135: if not self.environment[
Line 136: osetupcons.DBEnv.FIX_DB_VIOLATIONS
Line 137: ]:
Line 138: raise RuntimeError(
Line 139: _('User decided to skip db fix')
Aborted, database integrity cannot be established
Line 140: )
Line 141:
Line 142: @plugin.event(
Line 143: stage=plugin.Stages.STAGE_EARLY_MISC,
Line 144: name=osetupcons.Stages.FIX_DB_VIOLATIONS,
Line 145: condition=lambda self: self._enabled,
Line 146: )
Line 147: def _misc(self):
Line 148: self._dbUtil(fix=True)
please add logger.info before
Line 149:
Line 150:
--
To view, visit http://gerrit.ovirt.org/15970
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: I25979acbf54d980168be929638ff4aed800bf6d3
Gerrit-PatchSet: 6
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alex Lourie <[email protected]>
Gerrit-Reviewer: Alex Lourie <[email protected]>
Gerrit-Reviewer: Alon Bar-Lev <[email protected]>
Gerrit-Reviewer: Moran Goldboim <[email protected]>
Gerrit-Reviewer: Ofer Schreiber <[email protected]>
Gerrit-Reviewer: Sandro Bonazzola <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches