def schedule_backup(self, **kwargs): try: backup = Backup() backup.created_date = date_now() backup.strategy = get_validate_arg(kwargs, "strategy", expected_type=BackupStrategy) backup.source = get_validate_arg(kwargs, "source", BackupSource) backup.target = get_validate_arg(kwargs, "target", BackupTarget) backup.priority = get_validate_arg(kwargs, "priority", expected_type=(int, long, float, complex), required=False) backup.plan_occurrence = \ get_validate_arg(kwargs, "plan_occurrence", expected_type=datetime, required=False) backup.plan = get_validate_arg(kwargs, "plan", expected_type=BackupPlan, required=False) backup.secondary_targets = get_validate_arg(kwargs, "secondary_targets", expected_type=list, required=False) backup.change_state(State.SCHEDULED) # set tags tags = get_validate_arg(kwargs, "tags", expected_type=dict, required=False) backup.tags = tags bc = get_mbs().backup_collection try: # resolve tags self._resolve_task_tags(backup) except Exception, ex: self._task_failed_to_schedule(backup, bc, ex) backup_doc = backup.to_document() get_mbs().backup_collection.save_document(backup_doc) # set the backup id from the saved doc backup.id = backup_doc["_id"] self.info("Saved backup \n%s" % backup) if backup.state == State.FAILED: trigger_task_finished_event(backup, State.FAILED) return backup
def worker_finished(self, state, message=None): # set end date self._task.end_date = date_now() self._task.state = state self.get_task_collection().update_task( self._task, properties=["state", "endDate", "nextRetryDate", "finalRetryDate", "cleanedUp"], event_name=EVENT_STATE_CHANGE, message=message) trigger_task_finished_event(self._task, state)
def schedule_backup(self, **kwargs): try: backup = Backup() backup.created_date = date_now() backup.strategy = get_validate_arg(kwargs, "strategy", expected_type=BackupStrategy) backup.source = get_validate_arg(kwargs, "source", BackupSource) backup.target = get_validate_arg(kwargs, "target", BackupTarget) backup.priority = get_validate_arg(kwargs, "priority", expected_type=(int, long, float, complex), required=False) backup.plan_occurrence = \ get_validate_arg(kwargs, "plan_occurrence", expected_type=datetime, required=False) backup.plan = get_validate_arg(kwargs, "plan", expected_type=BackupPlan, required=False) backup.secondary_targets = get_validate_arg(kwargs, "secondary_targets", expected_type=list, required=False) backup.change_state(State.SCHEDULED) # set tags tags = get_validate_arg(kwargs, "tags", expected_type=dict, required=False) backup.tags = tags bc = get_mbs().backup_collection try: # resolve tags self._resolve_task_tags(backup) except Exception, ex: self._task_failed_to_schedule(backup, bc, ex) self.set_custom_backup_props(backup) backup_doc = backup.to_document() get_mbs().backup_collection.save_document(backup_doc) # set the backup id from the saved doc backup.id = backup_doc["_id"] self.info("Saved backup \n%s" % backup) if backup.state == State.FAILED: trigger_task_finished_event(backup, State.FAILED) return backup
if reset_try_count or force: backup.try_count = 0 props.append("tryCount") # regenerate backup tags if backup belongs to a plan if backup.plan and backup.plan.tags: backup.tags = backup.plan.tags.copy() try: self._resolve_task_tags(backup) except Exception, ex: self._task_failed_to_schedule(backup, bc, ex) if backup.state == State.FAILED: if not get_mbs().event_queue: get_mbs().notifications.notify_task_reschedule_failed(backup) trigger_task_finished_event(backup, State.FAILED) bc.update_task(backup, properties=props, event_name=EVENT_STATE_CHANGE, message="Rescheduling") ########################################################################### def reschedule_restore(self, restore, force=False): """ Reschedules the restore IF state is FAILED """ if restore.state != State.FAILED: msg = ("Cannot reschedule restore ('%s', '%s'). Rescheduling is " "only allowed for restores whose state is '%s'." % (restore.id, restore.state, State.FAILED))