Example #1
0
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/')
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
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")
Example #6
0
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/')
Example #7
0
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")
Example #8
0
 def run(self):
     bacula = Bacula()
     bacula.run_backup(self.bacula_name, 
                       client_name=self.computer.bacula_name)
Example #9
0
 def cancel_jobid(cls, job_id):
     bacula = Bacula()
     bacula.cancel_job(job_id)
Example #10
0
 def cancel(self):
     bacula = Bacula()
     bacula.cancel_procedure(self)
Example #11
0
 def cancel_jobid(cls, job_id):
     bacula = Bacula()
     bacula.cancel_job(job_id)
Example #12
0
 def cancel(self):
     bacula = Bacula()
     bacula.cancel_procedure(self)