{% extends "base.html" %} {% import '_ui.html' as ui %} {% block title %}Hardware coverage - PXE Manager{% endblock %} {# Hardware coverage: one line per model WinPE has reported. The line shows the model, one coverage chip per image, the BIOS state and when it was last seen; the body holds SKUs, serials, PC types, BIOS versions and the driver files each image resolves to. #} {% set drv_chip = { 'ok': ('OK', 'ok'), 'no-entry': ('Missing', 'err'), 'zip-missing': ('Zip missing', 'err'), } %} {# Chip for one image's driver status; the tip names the file or the reason. #} {% macro driver_chip(d) -%} {% set c = drv_chip.get(d.status) %} {% if c %} {{ ui.chip(c[0], c[1]) }} {%- else %}-{% endif %} {%- endmacro %} {% macro bios_chip(b) -%} {% if b.status == 'current' %}{{ ui.chip('Current ' ~ b.target, 'ok') }} {% elif b.status == 'update' %}{{ ui.chip('Flashes to ' ~ b.target, 'neutral') }} {% elif b.status == 'file-missing' %}{{ ui.chip('File missing', 'err') }} {% else %}{{ ui.chip('No BIOS entry', 'err') }}{% endif %} {%- endmacro %} {# A newer Dell pack/BIOS for the file this model uses, from the last Updates > Dell scan. #} {% macro new_chip(found, file) -%} {% if file and file | lower in found %} {{ ui.chip('New', 'run') }} Dell version {{ found[file | lower] }} {% endif %} {%- endmacro %} {% block extra_head %} {% endblock %} {% block content %} {% set gaps = rows | selectattr('gap') | rejectattr('dismissed') | list %} {% set dismissed = rows | selectattr('gap') | selectattr('dismissed') | list %} {{ ui.head('Hardware coverage', 'Operate', (rows | length) ~ ' model' ~ ('s' if rows | length != 1) ~ ' seen' ~ (', ' ~ (gaps | length) ~ ' with open gaps' if gaps else '')) }}

Models seen

Every model that has booted WinPE here, as the machine reported it (WMI model, Dell system SKU, BIOS version), checked against each image's driver map and the WinPE BIOS manifest. A model missing a driver pack or a BIOS entry also shows on the Technician to-do until it is added or dismissed.

{% if rows %}
{% for r in rows %}
{{ r.model }} {% if r.manufacturer %}{{ r.manufacturer }}{% endif %} {% if r.gap and r.dismissed %}{{ ui.chip('Dismissed', 'off') }}{% endif %} {% for image, os_label in images %} {{ image | replace('gea-', '') }}{{ driver_chip(r.drivers[image]) }}{{ new_chip(hints.drivers, r.drivers[image].file) }} {% endfor %} BIOS{{ bios_chip(r.bios) }}{{ new_chip(hints.bios, r.bios.file) }} {{ r.last_seen | local_dt }}
Model (WMI)
{{ r.model }}
{% if r.manufacturer %}
Manufacturer
{{ r.manufacturer }}
{% endif %}
System SKU
{{ r.skus | join(', ') or '-' }}
Serials
{{ r.serials | join(', ') or '-' }}
PC types
{{ r.pctypes | join(', ') or '-' }}
BIOS versions seen
{{ r.bios_versions | join(', ') or '-' }}{% if r.last_bios_version %} (last {{ r.last_bios_version }}){% endif %}
Last seen
{{ r.last_seen | local_dt }}, {{ r.count }} boot{{ 's' if r.count != 1 }}
First seen
{{ r.first_seen | local_dt }}
{% for image, os_label in images %} {% set d = r.drivers[image] %}
{{ image }} {{ os_label }} {% if drv_chip.get(d.status) %}{{ ui.chip(drv_chip[d.status][0], drv_chip[d.status][1]) }}{% else %}Not on server{% endif %} {% if d.status == 'no-entry' %}No HardwareDriver.json entry matches this model. {% elif d.status == 'zip-missing' %}{{ d.file }} matches, but the zip is not on the server. {% elif d.file %}{{ d.file }}{% endif %} {% if d.file and d.file | lower in hints.drivers %} Dell has {{ hints.drivers[d.file | lower] or 'a newer version' }}{% endif %}
{% endfor %}
BIOS {{ bios_chip(r.bios) }} {% if r.bios.status == 'none' %}No line in the WinPE BIOS manifest matches this model. {% elif r.bios.status == 'file-missing' %}{{ r.bios.file }} is not in the BIOS folder. {% elif r.bios.file %}{{ r.bios.file }}{% endif %} {% if r.bios.file and r.bios.file | lower in hints.bios %} Dell has {{ hints.bios[r.bios.file | lower] or 'a newer version' }}{% endif %}
{% if r.gap %}
{% call ui.more(r.model) %}
{% endcall %}
{% endif %}
{% endfor %} {% else %}
No machines have reported yet. Models appear here the next time a machine boots WinPE from this server.
{% endif %}
{% endblock %} {% block extra_scripts %} {% endblock %}