{% extends "base.html" %} {% block title %}{{ device.name }} - Device Details{% endblock %} {% block head_extra %} {% endblock %} {% block content %}

Basic Information

Name: {{ device.name }}
Normalized: {{ device.normalized_name }}
Site: {{ device.site_code or 'Unknown' }} {% if device.site_name %}({{ device.site_name }}){% endif %}
Role: {{ device.role_name or 'Unknown' }}
Management IP: {% if device.management_ip %} {{ device.management_ip }} {% else %} Not set {% endif %}

Hardware Information

Vendor: {{ device.vendor_name or 'Unknown' }}
Model: {{ device.model or 'Unknown' }}
OS Version: {{ device.os_version or 'Unknown' }}
Device Type: {{ device.device_type_name or 'Unknown' }}
{% if device.device_type_name %}
Driver: {% if device.netmiko_driver %}
Netmiko: {{ device.netmiko_driver }}
{% endif %} {% if device.napalm_driver %}
NAPALM: {{ device.napalm_driver }}
{% endif %}
{% endif %}

Capture Status

Current Captures: {% if device.current_captures > 0 %} {{ device.current_captures }} {% else %} 0 {% endif %}
Capture Types: {{ device.capture_types or 0 }}
Last Fingerprint: {% if device.last_fingerprint %}
{{ device.last_fingerprint[:19] }}
{% if device.last_fingerprint_success %} {% else %} {% endif %}
{% else %} Never {% endif %}
Last Updated: {% if device.last_updated %}
{{ device.last_updated[:19] }}
{% else %} Unknown {% endif %}
{% if serials %}
{% for serial in serials %}
{{ serial.serial }} {% if serial.is_primary %} Primary {% endif %}
{% endfor %}
{% else %}

No serial numbers available

No serial numbers have been discovered for this device

{% endif %}
{% if device.is_stack %}
{% if stack_members %}
{% for member in stack_members %}

Position {{ member.position or '?' }}

{% if member.is_master %} Master {% endif %}
Serial: {{ member.serial }}
{% if member.model %}
Model: {{ member.model }}
{% endif %}
{% endfor %}
{% else %}

No stack members found

No stack member information is available

{% endif %}
{% endif %}
{% if components %}
Total Components
{{ components|length }}
With Serials
{{ components|selectattr('serial')|list|length }}
Component Types
{{ components|map(attribute='type')|unique|list|length }}
{% set component_types = {} %} {% for comp in components %} {% set comp_type = comp.type or 'unknown' %} {% if comp_type not in component_types %} {% set _ = component_types.update({comp_type: 0}) %} {% endif %} {% set _ = component_types.update({comp_type: component_types[comp_type] + 1}) %} {% endfor %} {% for type, count in component_types.items()|sort %} {% endfor %}
{% set components_by_type = {} %} {% for comp in components %} {% set comp_type = comp.type or 'unknown' %} {% if comp_type not in components_by_type %} {% set _ = components_by_type.update({comp_type: []}) %} {% endif %} {% set _ = components_by_type[comp_type].append(comp) %} {% endfor %}
{% for type in ['chassis', 'module', 'supervisor', 'psu', 'fan', 'transceiver', 'unknown'] %} {% if type in components_by_type %} {% set type_components = components_by_type[type] %}

{{ type }} Components

{{ type_components|length }}
{% for comp in type_components %}
{{ comp.name }}
{% if comp.description and comp.description != comp.name %}
{{ comp.description }}
{% endif %}
{% if comp.serial %} {% endif %}
{% if comp.serial %}
Serial: {{ comp.serial }}
{% endif %} {% if comp.position %}
Position: {{ comp.position }}
{% endif %} {% if comp.subtype %}
Subtype: {{ comp.subtype }}
{% endif %} {% if comp.extraction_confidence %}
Confidence:
{{ "%.0f"|format(comp.extraction_confidence * 100) }}%
{% endif %}
{% endfor %}
{% endif %} {% endfor %}
{% else %}

No components discovered

No hardware components have been identified for this device

{% endif %}
{% if captures %}
{% for capture in captures %}

{{ capture.capture_type }}

{% if capture.extraction_success %} {% else %} {% endif %}
Size: {% if capture.file_size %} {{ "%.1f"|format(capture.file_size / 1024) }} KB {% else %} Unknown {% endif %}
Captured: {{ capture.capture_timestamp[:19] }}
{% if capture.command_used %}
Command: {{ capture.command_used }}
{% endif %}
{% endfor %}
{% else %}

No captures available

No configuration captures have been taken for this device

{% endif %}
{% if fingerprints %}
{% for fp in fingerprints %}

{{ fp.extraction_timestamp[:19] }} {% if fp.extraction_success %} {% else %} {% endif %}

{% if fp.template_used %}
Template: {{ fp.template_used }}
{% endif %} {% if fp.template_score %}
Score: {{ "%.2f"|format(fp.template_score) }}
{% endif %} {% if fp.fields_extracted and fp.total_fields_available %}
Fields: {{ fp.fields_extracted }}/{{ fp.total_fields_available }}
{% endif %} {% if fp.extraction_duration_ms %}
Duration: {{ fp.extraction_duration_ms }}ms
{% endif %}
{% endfor %}
{% else %}

No fingerprint data available

No device fingerprinting has been performed

{% endif %}

Device Notes ({{ device_notes|length if device_notes else 0 }})

All Device Notes Add Note
{% if device_notes %} {% for note in device_notes %} {% endfor %}
Title Type Preview Updated Actions
{{ note.title }} {% if note.tags %}
{% set tags = note.tags|from_json %} {% for tag in tags[:2] %} {{ tag }} {% endfor %}
{% endif %}
{{ note.note_type|title }} {{ note.content|striptags|truncate(80) }} {{ note.updated_at[:10] }}
{% else %}

No notes for this device

Document configurations, issues, maintenance activities, or troubleshooting steps

Create First Note
{% endif %}

Content Viewer

Loading...

Confirm Deletion

Delete device "{{ device.name }}"?

{% if device.current_captures > 0 or fingerprints|length > 0 or serials|length > 0 or stack_members|length > 0 or components|length > 0 %}
This will also delete:
    {% if device.current_captures > 0 %}
  • {{ device.current_captures }} captures
  • {% endif %} {% if fingerprints|length > 0 %}
  • {{ fingerprints|length }} fingerprints
  • {% endif %} {% if serials|length > 0 %}
  • {{ serials|length }} serial numbers
  • {% endif %} {% if stack_members|length > 0 %}
  • {{ stack_members|length }} stack members
  • {% endif %} {% if components|length > 0 %}
  • {{ components|length }} components
  • {% endif %}
{% endif %}

This action cannot be undone!

{% endblock %}