def register_task(self): task_history = TaskHistory() task_history.task_id = datetime.now().strftime("%Y%m%d%H%M%S") task_history.task_name = "switch_masters_in_zone" task_history.relevance = TaskHistory.RELEVANCE_WARNING task_history.task_status = TaskHistory.STATUS_RUNNING task_history.context = {'hostname': gethostname()} task_history.user = '******' task_history.save() return task_history
def register_task(self, database): task_history = TaskHistory() task_history.task_id = datetime.now().strftime("%Y%m%d%H%M%S") task_history.task_name = self.TASK_NAME task_history.relevance = TaskHistory.RELEVANCE_WARNING task_history.task_status = TaskHistory.STATUS_RUNNING task_history.context = {'hostname': gethostname()} task_history.user = '******' task_history.db_id = database.id task_history.object_class = "logical_database" task_history.object_id = database.id task_history.database_name = database.name task_history.arguments = 'Database_name: {}'.format(database.name) task_history.save() return task_history
def region_migration_start(self, infra, instances, since_step=None): steps = [{ 'Disable monitoring and alarms': ( 'workflow.steps.util.zabbix.DestroyAlarms', 'workflow.steps.util.db_monitor.DisableMonitoring', ) }, { 'Stopping infra': ( 'workflow.steps.util.database.Stop', 'workflow.steps.util.database.CheckIsDown', ) }, { 'Creating new virtual machine': ('workflow.steps.util.vm.MigrationCreateNewVM', ) }, { 'Creating new infra': ( 'workflow.steps.util.vm.MigrationWaitingBeReady', 'workflow.steps.util.infra.MigrationCreateInstance', 'workflow.steps.util.disk.MigrationCreateExport', ) }, { 'Configuring new infra': ( 'workflow.steps.util.volume_provider.MountDataVolume', 'workflow.steps.util.plan.InitializationMigration', 'workflow.steps.util.plan.ConfigureMigration', 'workflow.steps.util.plan.ConfigureLog', 'workflow.steps.util.metric_collector.ConfigureTelegraf', ) }, { 'Preparing new environment': ( 'workflow.steps.util.disk.AddDiskPermissionsOldest', 'workflow.steps.util.disk.MountOldestExportMigration', 'workflow.steps.util.disk.CopyDataBetweenExportsMigration', 'workflow.steps.util.disk.FilePermissionsMigration', 'workflow.steps.util.disk.UnmountNewerExportMigration', 'workflow.steps.util.vm.ChangeInstanceHost', 'workflow.steps.util.vm.UpdateOSDescription', 'workflow.steps.util.infra.OfferingMigration', 'workflow.steps.util.infra.UpdateMigrateEnvironment', 'workflow.steps.util.infra.UpdateMigratePlan', ) }, { 'Starting new infra': ( 'workflow.steps.util.database.Start', 'workflow.steps.util.database.CheckIsUp', 'workflow.steps.util.metric_collector.RestartTelegraf', ) }, { 'Enabling access': ( 'workflow.steps.util.dns.ChangeEndpoint', 'workflow.steps.util.acl.ReplicateAclsMigration', ) }, { 'Destroying old infra': ( 'workflow.steps.util.disk.DisableOldestExportMigration', 'workflow.steps.util.disk.DiskUpdateHost', 'workflow.steps.util.vm.RemoveHostMigration', ) }, { 'Enabling monitoring and alarms': ( 'workflow.steps.util.db_monitor.EnableMonitoring', 'workflow.steps.util.zabbix.CreateAlarms', ) }, { 'Restart replication': ('workflow.steps.util.database.SetSlavesMigration', ) }] task = TaskHistory() task.task_id = self.request.id task.task_name = "migrating_zone" task.task_status = TaskHistory.STATUS_RUNNING task.context = {'infra': infra, 'instances': instances} task.arguments = {'infra': infra, 'instances': instances} task.user = '******' task.save() if steps_for_instances(steps, instances, task, since_step=since_step): task.set_status_success('Region migrated with success') else: task.set_status_error('Could not migrate region') database = infra.databases.first() database.environment = infra.environment database.save()
def region_migration_start(self, infra, instances, since_step=None): steps = [{ 'Disable monitoring and alarms': ( 'workflow.steps.util.zabbix.DestroyAlarms', 'workflow.steps.util.db_monitor.DisableMonitoring', )}, { 'Stopping infra': ( 'workflow.steps.util.database.Stop', 'workflow.steps.util.database.CheckIsDown', )}, { 'Creating new virtual machine': ( 'workflow.steps.util.vm.MigrationCreateNewVM', )}, { 'Creating new infra': ( 'workflow.steps.util.vm.MigrationWaitingBeReady', 'workflow.steps.util.infra.MigrationCreateInstance', 'workflow.steps.util.disk.MigrationCreateExport', )}, { 'Configuring new infra': ( 'workflow.steps.util.volume_provider.MountDataVolume', 'workflow.steps.util.plan.InitializationMigration', 'workflow.steps.util.plan.ConfigureMigration', 'workflow.steps.util.metric_collector.ConfigureTelegraf', )}, { 'Preparing new environment': ( 'workflow.steps.util.disk.AddDiskPermissionsOldest', 'workflow.steps.util.disk.MountOldestExportMigration', 'workflow.steps.util.disk.CopyDataBetweenExportsMigration', 'workflow.steps.util.disk.FilePermissionsMigration', 'workflow.steps.util.disk.UnmountNewerExportMigration', 'workflow.steps.util.vm.ChangeInstanceHost', 'workflow.steps.util.vm.UpdateOSDescription', 'workflow.steps.util.infra.OfferingMigration', 'workflow.steps.util.infra.UpdateMigrateEnvironment', 'workflow.steps.util.infra.UpdateMigratePlan', )}, { 'Starting new infra': ( 'workflow.steps.util.database.Start', 'workflow.steps.util.database.CheckIsUp', 'workflow.steps.util.metric_collector.RestartTelegraf', )}, { 'Enabling access': ( 'workflow.steps.util.dns.ChangeEndpoint', 'workflow.steps.util.acl.ReplicateAclsMigration', )}, { 'Destroying old infra': ( 'workflow.steps.util.disk.DisableOldestExportMigration', 'workflow.steps.util.disk.DiskUpdateHost', 'workflow.steps.util.vm.RemoveHostMigration', )}, { 'Enabling monitoring and alarms': ( 'workflow.steps.util.db_monitor.EnableMonitoring', 'workflow.steps.util.zabbix.CreateAlarms', )}, { 'Restart replication': ( 'workflow.steps.util.database.SetSlavesMigration', ) }] task = TaskHistory() task.task_id = self.request.id task.task_name = "migrating_zone" task.task_status = TaskHistory.STATUS_RUNNING task.context = {'infra': infra, 'instances': instances} task.arguments = {'infra': infra, 'instances': instances} task.user = '******' task.save() if steps_for_instances(steps, instances, task, since_step=since_step): task.set_status_success('Region migrated with success') else: task.set_status_error('Could not migrate region') database = infra.databases.first() database.environment = infra.environment database.save()