diff --git a/router_manager/views.py b/router_manager/views.py index 8d590ca..ac7d8e6 100644 --- a/router_manager/views.py +++ b/router_manager/views.py @@ -60,6 +60,7 @@ def view_router_details(request): router = get_object_or_404(Router, uuid=request.GET.get('uuid')) router_status, _ = RouterStatus.objects.get_or_create(router=router) router_backup_list = router.routerbackup_set.all().order_by('-created') + router_information = RouterInformation.objects.filter(router=router).first() downtime_last_week = router.routerdowntime_set.filter(start_time__gte=timezone.now() - timezone.timedelta(days=7)).aggregate(total=Sum('total_down_time'))['total'] if downtime_last_week is None: downtime_last_week = 0 @@ -76,6 +77,7 @@ def view_router_details(request): context = { 'router': router, + 'router_information': router_information, 'router_status': router_status, 'router_backup_list': router_backup_list, 'page_title': 'Router Details', @@ -106,6 +108,16 @@ def view_manage_router(request): else: messages.warning(request, 'Router not deleted|Invalid confirmation') return redirect('router_list') + elif request.GET.get('action') == 'refresh_information': + router_information, created = RouterInformation.objects.get_or_create(router=router) + router_information.next_retry = timezone.now() + router_information.retry_count = 0 + router_information.success = False + router_information.error = False + router_information.error_message = '' + router_information.save() + messages.success(request, 'Router information will be updated shortly') + return redirect('/router/details/?uuid=' + str(router.uuid)) else: router = None @@ -115,6 +127,8 @@ def view_manage_router(request): messages.success(request, 'Router saved successfully|It may take a few minutes until monitoring starts for this router.') router_status, _ = RouterStatus.objects.get_or_create(router=form.instance) BackupSchedule.objects.filter(router=form.instance).delete() + if form.instance.router_type == 'monitoring': + RouterInformation.objects.filter(router=form.instance).delete() webadmin_settings.router_config_last_updated = timezone.now() webadmin_settings.save() return redirect('router_list') diff --git a/routerfleet/settings.py b/routerfleet/settings.py index 452d4f6..82bb0db 100644 --- a/routerfleet/settings.py +++ b/routerfleet/settings.py @@ -142,6 +142,6 @@ STATICFILES_DIRS = [ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' MEDIA_ROOT = '/var/lib/routerfleet/' -ROUTERFLEET_VERSION = 7502 +ROUTERFLEET_VERSION = 7503 from routerfleet.production_settings import * diff --git a/templates/router_manager/router_details.html b/templates/router_manager/router_details.html index 45afe1a..9433568 100644 --- a/templates/router_manager/router_details.html +++ b/templates/router_manager/router_details.html @@ -3,41 +3,43 @@ {% block content %}
-
-
-

{{ router.name }} -

- +
+
+
+
+

{{ router.name }} +

+ -
-
-
-
    -
  • - Enabled - +
+
+
+
    +
  • + Enabled + {% if router.enabled %} {% else %} {% endif %} -
  • -
  • - Address - {{ router.address }} -
  • - {% if router.router_type != 'monitoring' %} -
  • - username - {{ router.username }} -
  • -
  • - Authentication - +
  • +
  • + Address + {{ router.address }} +
  • + {% if router.router_type != 'monitoring' %} +
  • + username + {{ router.username }} +
  • +
  • + Authentication + {% if router.ssh_key %} SSH Key: {{ router.ssh_key }} {% elif router.password %} @@ -46,11 +48,11 @@ Missing authentication {% endif %} -
  • - {% endif %} -
  • - Monitoring - +
  • + {% endif %} +
  • + Monitoring + {% if router.monitoring %} {% if router.routerstatus.status_online %} @@ -61,34 +63,34 @@ Disabled {% endif %} -
  • - {% if router.monitoring %} -
  • - Availability (last 7 days) - +
  • + {% if router.monitoring %} +
  • + Availability (last 7 days) + {{ last_week_availability }}% -
  • - {% endif %} -
  • - Router Type - {{ router.get_router_type_display }} -
  • - -
  • - Groups - +
  • + {% endif %} +
  • + Router Type + {{ router.get_router_type_display }} +
  • + +
  • + Groups + {% for router_group in router.routergroup_set.all %} {{ router_group.name }} {% endfor %} -
  • - {% if router.router_type != 'monitoring' %} -
  • - Backup Profile - +
  • + {% if router.router_type != 'monitoring' %} +
  • + Backup Profile + {% if router.backup_profile %} {{ router.backup_profile }} {% if router.routerstatus.last_backup_failed %} @@ -98,120 +100,231 @@ {% endif %} -
  • -
  • - Instant Backup - +
  • +
  • + Instant Backup + Backup now -
  • - {% endif %} -
  • - Notes - {{ router.internal_notes|default_if_none:""|linebreaksbr }} -
  • -
+ + {% endif %} +
  • + Notes + {{ router.internal_notes|default_if_none:""|linebreaksbr }} +
  • + +
    +
    +
    + {% if router_information %} +
    +
    +

    Router Information +

    + + {% if not router_information.success and not router_information.error %} + + + {% else %} + + {% endif %} +
    +
    +
    +
      +
    • + Model Name + + {{ router_information.model_name|default_if_none:"" }} + +
    • + +
    • + Version + + {{ router_information.model_version|default_if_none:"" }} + +
    • + +
    • + Serial + + {{ router_information.serial_number|default_if_none:"" }} + +
    • + +
    • + OS Version + + {{ router_information.os_version|default_if_none:"" }} + +
    • + +
    • + Firmware Version + + {{ router_information.firmware_version|default_if_none:"" }} + +
    • + +
    • + Architeture + + {{ router_information.architecture|default_if_none:"" }} + +
    • + +
    • + CPU + + {{ router_information.cpu|default_if_none:"" }} + +
    • + +
    • + Last Update + + {% if router_information.success %} + {{ router_information.last_retrieval }} + {% elif router_information.error %} + + {% else %} + + {% endif %} + +
    • + +
    • +
      + Source Data + + + + +
      + +
    • +
    +
    +
    +
    + {% endif %} +
    +
    + + +
    - {% if router_backup_list or router.router_type != 'monitoring' %} -
    -
    -

    Backup history

    - + +
    +
    + {% if router_backup_list or router.router_type != 'monitoring' %} +
    +
    +

    Backup history

    + {% if router.backupschedule %} - + show schedule {% else %} - + show schedule {% endif %} - - -
    -
    -
    - - - - - - - - - - - - {% if router.backupschedule.next_daily_backup %} - - - - - - - - {% endif %} - {% if router.backupschedule.next_weekly_backup %} - - - - - - - - {% endif %} - {% if router.backupschedule.next_monthly_backup %} - - - - - - - - {% endif %} - {% for backup in router_backup_list %} - - - - - + + + + + + + {% endif %} + + {% for backup in router_backup_list %} + + + + + + + + {% endfor %} + +
    IDScheduleTimeStatus
    - - {{ backup.id }} - - {{ backup.get_schedule_type_display }}{% if backup.finish_time %}{{ backup.finish_time }}{% else %} - {% if not backup.error %}{% endif %}{% endif %} - {% if backup.success %} - - {% elif backup.error %} - - {% elif backup.backup_pending_retrieval %} - - {% else %} - + + +
    +
    + + + + + + + + + + + + {% if router.backupschedule.next_daily_backup %} + + + + + + + {% endif %} - - + + + + + + {% endif %} - - - {% endfor %} - -
    IDScheduleTimeStatus
    - {% if backup.backup_text_hash %} - {{ backup.backup_text_hash|default_if_none:""|slice:":8" }}... + {% if router.backupschedule.next_weekly_backup %} +
    -
    + {% if router.backupschedule.next_monthly_backup %} +
    + + {{ backup.id }} + + {{ backup.get_schedule_type_display }}{% if backup.finish_time %}{{ backup.finish_time }}{% else %} + {% if not backup.error %}{% endif %}{% endif %} + {% if backup.success %} + + {% elif backup.error %} + + {% elif backup.backup_pending_retrieval %} + + {% else %} + + {% endif %} + + {% if backup.backup_text_hash %} + {{ backup.backup_text_hash|default_if_none:""|slice:":8" }}... + {% endif %} +
    +
    +
    +
    + {% endif %} +
    - {% endif %} + +
    {% endblock %} diff --git a/templates/router_manager/router_list.html b/templates/router_manager/router_list.html index b3e0e6f..2bc5330 100644 --- a/templates/router_manager/router_list.html +++ b/templates/router_manager/router_list.html @@ -20,6 +20,7 @@ Select Name Type + Version Address Status Backup @@ -34,6 +35,11 @@ {{ router.name }} {{ router.get_router_type_display }} + + {% if router.router_type != 'monitoring' %} + {{ router.routerinformation.os_version|default_if_none:'' }} + {% endif %} + {{ router.address }} {% if router.monitoring %}