def create_backup_plan(self, **kwargs): try: plan = BackupPlan() plan.created_date = date_now() plan.description = get_validate_arg(kwargs, "description", expected_type=(str, unicode), required=False) plan.strategy = get_validate_arg(kwargs, "strategy", expected_type=BackupStrategy) plan.schedule = get_validate_arg(kwargs, "schedule", expected_type=AbstractSchedule) plan.source = get_validate_arg(kwargs, "source", expected_type=BackupSource) plan.target = get_validate_arg(kwargs, "target", expected_type=BackupTarget) plan.retention_policy = get_validate_arg(kwargs, "retention_policy", expected_type= RetentionPolicy, required=False) plan.priority = get_validate_arg(kwargs, "priority", expected_type=(int, long, float, complex), required=False) plan.secondary_targets = get_validate_arg(kwargs, "secondary_targets", expected_type=list, required=False) # tags plan.tags = get_validate_arg(kwargs, "tags", expected_type=dict, required=False) plan_doc = plan.to_document() get_mbs().plan_collection.save_document(plan_doc) # set the backup plan id from the saved doc plan.id = plan_doc["_id"] self.info("Saved backup plan \n%s" % plan) # process plan to set next occurrence self._scheduler._process_plan(plan) return plan except Exception, e: args_str = dict_to_str(kwargs) msg = ("Failed to create plan. Args:\n %s" % args_str) logger.error(msg) logger.error(traceback.format_exc()) raise CreatePlanError(msg=msg, cause=e)
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 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