Ejemplo n.º 1
0
def add_backup_file (request, machine = False, windows = False):
    """
        Asocia un fichero a una planificación de una máquina.
    """
    # Hay que saber desde qué máquina nos están consultando.
    logger.debug('Adding backup file')
    if not machine:
        machine = Machine.get_by_addr(request.META['REMOTE_ADDR'])
        if not machine:
            msg = 'There is no machine for address: %s' % request.META['REMOTE_ADDR']
            logger.error(msg)
            raise Http404(msg)
    if not request.GET.has_key('filename'):
        logger.error('No Filename in request')
        raise Http404("filename")
    if not request.GET.has_key ('filedate'):
        logger.error('No File date in request')
        raise Http404("Filedate")
    if windows and not request.GET.has_key ('filetime'):
        logger.error('No File time in request')
        raise Http404("Filetime")
    if not windows and not request.GET.has_key('filesize'):
        logger.error('No File size in request')
        raise Http404("Filesize")
    filename = request.GET['filename']
    logger.debug('filename: %s', filename)
    if windows:
        logger.debug('Windows file')
        filedate = map(int, request.GET['filedate'].split ('/'))
        filetime = map (int, request.GET['filetime'].split (':'))
        filedate = datetime.datetime.now (filedate[2], filedate[1], filedate[0], filetime[0], filetime[1], filetime[2])
        filesize = 0
    else:
        logger.debug('Unix file')
        filedate = datetime.datetime.fromtimestamp(float(request.GET['filedate']))
        filesize = request.GET['filesize']
    fbp = FileBackupTask.get_fbp(machine, filename)
    if not fbp:
        msg = "There is no pattern for this file"
        logger.error(msg)
        return HttpResponse (msg)
    next_run = fbp.file_backup_task.next_run(filedate)
    previous_run = fbp.file_backup_task.last_run(filedate)
    if (abs(next_run - filedate) <= abs(filedate - previous_run)):
        tch_time = next_run
    else:
        tch_time = previous_run
    if tch_time > datetime.datetime.now():
        logger.error('Future backup')
    tch, created = TaskCheck.objects.get_or_create (
            task = fbp.file_backup_task,
            task_time = tch_time
        )
    if created:
        logger.debug('TaskCheck created')
    else:
        logger.debug('TaskCheck already exists')
    bf, created = BackupFile.objects.get_or_create (
            file_backup_product = fbp,
            task_check = tch,
            original_file_name = filename,
            original_date = filedate,
            original_file_size = filesize
        )
    if created:
        logger.debug('BackupFile created')
    else:
        logger.debug('BackupFile already exists')
    return HttpResponse("Ok")
Ejemplo n.º 2
0
     logger.debug('Windows file')
     filedate = map(int, request.GET['filedate'].split('/'))
     filetime = map(int, request.GET['filetime'].split(':'))
     filedate = datetime.datetime(filedate[2], filedate[1], filedate[0], filetime[0], filetime[1], filetime[2])
     filesize = 0
 else:
     logger.debug('Unix file')
     try:
         filedate = datetime.datetime.fromtimestamp(float(request.GET['filedate']))
         # Croniter doest not get seconds difference, to ensure last_run is this run we increment 1 min to filetime
         filedate = filedate + datetime.timedelta(minutes=1)
     except ValueError, e:
         logger.error(e)
         return HttpResponse(e)
     filesize = request.GET['filesize']
 fbp = FileBackupTask.get_fbp(machine, filename)
 if not fbp:
     msg = "There is no pattern for this file: %s" % filename
     logger.error(msg)
     return HttpResponse(msg)
 next_run = fbp.file_backup_task.next_run(filedate)
 previous_run = fbp.file_backup_task.last_run(filedate)
 if (abs(next_run - filedate) <= abs(filedate - previous_run)):
     tch_time = next_run
 else:
     tch_time = previous_run
 if tch_time > datetime.datetime.now():
     logger.error('Future backup')
 tch, created = TaskCheck.objects.get_or_create(
     task=fbp.file_backup_task,
     task_time=tch_time
Ejemplo n.º 3
0
def add_backup_file(request, machine=False, windows=False):
    """
        Asocia un fichero a una planificación de una máquina.
    """
    # Hay que saber desde qué máquina nos están consultando.
    logger.debug('Adding backup file')
    if not machine:
        machine = Machine.get_by_addr(request.META['REMOTE_ADDR'])
        if not machine:
            msg = 'There is no machine for address: %s' % request.META[
                'REMOTE_ADDR']
            logger.error(msg)
            raise Http404(msg)
    if not request.GET.has_key('filename'):
        logger.error('No Filename in request')
        raise Http404("filename")
    if not request.GET.has_key('filedate'):
        logger.error('No File date in request')
        raise Http404("Filedate")
    if windows and not request.GET.has_key('filetime'):
        logger.error('No File time in request')
        raise Http404("Filetime")
    if not windows and not request.GET.has_key('filesize'):
        logger.error('No File size in request')
        raise Http404("Filesize")
    filename = request.GET['filename']
    logger.debug('filename: %s', filename)
    if windows:
        logger.debug('Windows file')
        filedate = map(int, request.GET['filedate'].split('/'))
        filetime = map(int, request.GET['filetime'].split(':'))
        filedate = datetime.datetime.now(filedate[2], filedate[1], filedate[0],
                                         filetime[0], filetime[1], filetime[2])
        filesize = 0
    else:
        logger.debug('Unix file')
        filedate = datetime.datetime.fromtimestamp(
            float(request.GET['filedate']))
        filesize = request.GET['filesize']
    fbp = FileBackupTask.get_fbp(machine, filename)
    if not fbp:
        msg = "There is no pattern for this file"
        logger.error(msg)
        return HttpResponse(msg)
    next_run = fbp.file_backup_task.next_run(filedate)
    previous_run = fbp.file_backup_task.last_run(filedate)
    if (abs(next_run - filedate) <= abs(filedate - previous_run)):
        tch_time = next_run
    else:
        tch_time = previous_run
    if tch_time > datetime.datetime.now():
        logger.error('Future backup')
    tch, created = TaskCheck.objects.get_or_create(task=fbp.file_backup_task,
                                                   task_time=tch_time)
    if created:
        logger.debug('TaskCheck created')
    else:
        logger.debug('TaskCheck already exists')
    bf, created = BackupFile.objects.get_or_create(file_backup_product=fbp,
                                                   task_check=tch,
                                                   original_file_name=filename,
                                                   original_date=filedate,
                                                   original_file_size=filesize)
    if created:
        logger.debug('BackupFile created')
    else:
        logger.debug('BackupFile already exists')
    return HttpResponse("Ok")