def restore_files(request): """docstring for restore_files""" ## Parametros: # computer_id # procedure_id # job_id # destino # data_inicio # data_fim # path (lista) if request.method == "POST": computer = Computer.objects.get(id=request.POST["computer_id"]) jobid = int(request.POST["job_id"]) target = request.POST["destination"] files = request.POST.getlist("paths") bacula = Bacula() bacula.run_restore(computer.bacula_name, jobid, target, files) messages.success(request, "Recuperação iniciada com sucesso") messages.warning( request, "Atenção, a recuperação pode demorar alguns instantes para ser exibida na interface web" ) return redirect('/procedures/list/')
def list_files(jobid, path, computer): bacula = Bacula() if computer.operation_system == "windows" and not ':' in path: path = 'C:' + path #FIX: get windows drivers from restore return bacula.list_files(jobid, path)
def list_files(jobid, path, computer): bacula = Bacula() if computer.operation_system == "windows" and path == '/': files = File.objects.filter(job=jobid, path__path__isnull=False)\ .extra(select={'driver': 'substr( "path"."path", 0, 4)'})\ .values_list('driver', flat=True).distinct() return list(files) return bacula.list_files(jobid, path)
def list_files(jobid, computer, path="/"): if path == "": path = "/" bacula = Bacula() if computer.operation_system == "windows" and path == '/': files = File.objects.filter(job=jobid, path__path__isnull=False)\ .extra(select={'driver': 'substr( "path"."path", 0, 4)'})\ .values_list('driver', flat=True).distinct() return list(files) return bacula.list_files(jobid, path)
def remove_procedure_volumes(procedure): pool_name = procedure.pool_bacula_name() medias = Media.objects.filter(pool__name=pool_name).distinct() volumes = [m.volumename for m in medias] try: bacula = Bacula() bacula.cancel_procedure(procedure) bacula.purge_volumes(volumes, pool_name) bacula.truncate_volumes(pool_name) bacula.delete_pool(pool_name) for volume in volumes: volume_abs_path = join(settings.NIMBUS_DEFAULT_ARCHIVE, volume) if exists(volume_abs_path): os.remove(volume_abs_path) except BConsoleInitError, error: logger = logging.getLogger(__name__) logger.exception("Erro na comunicação com o bacula")
def restore_files(request): """docstring for restore_files""" ## Parametros: # computer_id # procedure_id # job_id # destino # data_inicio # data_fim # path (lista) if request.method == "POST": computer = Computer.objects.get(id=request.POST["computer_id"]) jobid = int(request.POST["job_id"]) target = request.POST["destination"] files = request.POST.getlist("paths") bacula = Bacula() bacula.run_restore(computer.bacula_name, jobid, target, files) messages.success(request, "Recuperação iniciada com sucesso") return redirect('/procedures/list/')
def run(self): bacula = Bacula() bacula.run_backup(self.bacula_name, client_name=self.computer.bacula_name)
def cancel_jobid(cls, job_id): bacula = Bacula() bacula.cancel_job(job_id)
def cancel(self): bacula = Bacula() bacula.cancel_procedure(self)