mirror of
https://github.com/eduardogsilva/routerfleet.git
synced 2025-08-04 02:04:49 +02:00
Perform backup tasks
This commit is contained in:
parent
a12a126d38
commit
aaed53ec5f
8 changed files with 189 additions and 10 deletions
18
router_manager/migrations/0011_routerstatus_backup_lock.py
Normal file
18
router_manager/migrations/0011_routerstatus_backup_lock.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 5.0.3 on 2024-04-03 11:57
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('router_manager', '0010_alter_router_router_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='routerstatus',
|
||||
name='backup_lock',
|
||||
field=models.DateTimeField(blank=True, null=True),
|
||||
),
|
||||
]
|
18
router_manager/migrations/0012_alter_router_router_type.py
Normal file
18
router_manager/migrations/0012_alter_router_router_type.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 5.0.3 on 2024-04-03 14:03
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('router_manager', '0011_routerstatus_backup_lock'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='router',
|
||||
name='router_type',
|
||||
field=models.CharField(choices=[('monitoring', 'Monitoring Only'), ('routeros', 'Mikrotik (RouterOS)')], max_length=100),
|
||||
),
|
||||
]
|
|
@ -26,7 +26,7 @@ class Router(models.Model):
|
|||
monitoring = models.BooleanField(default=True)
|
||||
backup_profile = models.ForeignKey(BackupProfile, on_delete=models.SET_NULL, null=True, blank=True)
|
||||
|
||||
router_type = models.CharField(max_length=100, choices=(('monitoring', 'Monitoring Only'), ('routeros', 'Mikrotik (RouterOS)'), ('openwrt', 'OpenWRT')))
|
||||
router_type = models.CharField(max_length=100, choices=(('monitoring', 'Monitoring Only'), ('routeros', 'Mikrotik (RouterOS)')))
|
||||
enabled = models.BooleanField(default=True)
|
||||
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
|
@ -43,6 +43,7 @@ class RouterStatus(models.Model):
|
|||
last_status_change = models.DateTimeField(blank=True, null=True)
|
||||
last_backup = models.DateTimeField(blank=True, null=True)
|
||||
last_backup_failed = models.DateTimeField(blank=True, null=True)
|
||||
backup_lock = models.DateTimeField(blank=True, null=True)
|
||||
|
||||
updated = models.DateTimeField(auto_now=True)
|
||||
created = models.DateTimeField(auto_now_add=True)
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
from django.contrib import messages
|
||||
from django.utils import timezone
|
||||
from django.shortcuts import render, get_object_or_404, redirect
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from backup_data.models import RouterBackup
|
||||
from .models import Router, RouterGroup, RouterStatus, SSHKey, BackupSchedule
|
||||
from .forms import RouterForm, RouterGroupForm, SSHKeyForm
|
||||
|
||||
|
@ -145,3 +148,25 @@ def view_manage_sshkey(request):
|
|||
'instance': sshkey
|
||||
}
|
||||
return render(request, 'generic_form.html', context=context)
|
||||
|
||||
|
||||
@login_required()
|
||||
def view_create_instant_backup_task(request):
|
||||
router = get_object_or_404(Router, uuid=request.GET.get('uuid'))
|
||||
router_details_url = f'/router/details/?uuid={router.uuid}'
|
||||
if RouterBackup.objects.filter(router=router, success=False, error=False).exists():
|
||||
messages.warning(request, 'Backup task not created|Active router backup task already exists')
|
||||
return redirect(router_details_url)
|
||||
if router.routerstatus.backup_lock is not None:
|
||||
messages.warning(request, 'Backup task not created|Router backup is currently locked')
|
||||
return redirect(router_details_url)
|
||||
if not router.backup_profile:
|
||||
messages.warning(request, 'Backup task not created|Router has no backup profile')
|
||||
return redirect(router_details_url)
|
||||
|
||||
router_backup = RouterBackup.objects.create(router=router, schedule_time=timezone.now(), schedule_type='instant')
|
||||
router.routerstatus.backup_lock = router_backup.schedule_time
|
||||
router.routerstatus.save()
|
||||
messages.success(request, 'Backup task created successfully')
|
||||
return redirect(router_details_url)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue