Fix deploy page: NoneType sort + version extraite du nom fichier dans dropdown

This commit is contained in:
Pierre & Lumière 2026-04-11 21:39:59 +02:00
parent 3d053019e6
commit 6411774004
2 changed files with 22 additions and 11 deletions

View File

@ -1,7 +1,7 @@
"""Service de deploiement Qualys Cloud Agent via SSH"""
import os
import re
import logging
import glob
from datetime import datetime
log = logging.getLogger(__name__)
@ -15,18 +15,26 @@ except ImportError:
PARAMIKO_OK = False
def _extract_version(filename):
"""Extrait la version depuis le nom du fichier"""
m = re.search(r'(\d+\.\d+\.\d+[\.\-]\d+)', filename)
return m.group(1) if m else "inconnue"
def list_packages():
"""Liste les packages disponibles dans /opt/patchcenter/agents/"""
packages = {"deb": [], "rpm": []}
if not os.path.isdir(AGENTS_DIR):
return packages
for f in sorted(os.listdir(AGENTS_DIR)):
for f in sorted(os.listdir(AGENTS_DIR), reverse=True):
path = os.path.join(AGENTS_DIR, f)
size_mb = round(os.path.getsize(path) / 1024 / 1024, 1)
version = _extract_version(f)
entry = {"name": f, "path": path, "size": size_mb, "version": version}
if f.endswith(".deb"):
packages["deb"].append({"name": f, "path": path, "size": size_mb})
packages["deb"].append(entry)
elif f.endswith(".rpm"):
packages["rpm"].append({"name": f, "path": path, "size": size_mb})
packages["rpm"].append(entry)
return packages
@ -85,9 +93,12 @@ def check_agent(hostname, ssh_user, ssh_key_path, ssh_port=22):
status = out.strip()
result["service_status"] = status
# Get version
code, out, _ = _run_cmd(client, "qualys-cloud-agent --version 2>/dev/null || cat /etc/qualys/cloud-agent/qualys-cloud-agent.conf 2>/dev/null | grep -i version | head -1")
result["version"] = out.strip()[:50]
# Get version via package manager
code, out, _ = _run_cmd(client, "rpm -q qualys-cloud-agent 2>/dev/null || dpkg -l qualys-cloud-agent 2>/dev/null | grep '^ii' | awk '{print $3}'")
version = out.strip()
# Extract just version number
m = re.search(r'(\d+\.\d+\.\d+[\.\-]\d+)', version)
result["version"] = m.group(1) if m else version[:50]
# Get last checkin from log
code, out, _ = _run_cmd(client, "tail -5 /var/log/qualys/qualys-cloud-agent.log 2>/dev/null | grep 'HTTP response code: 200' | tail -1 | awk '{print $1, $2}'")

View File

@ -39,7 +39,7 @@
<label class="text-xs text-gray-500 block mb-1">Package DEB (Debian/Ubuntu)</label>
<select id="package_deb" class="w-full text-xs">
{% for p in packages.deb %}
<option value="{{ p.path }}">{{ p.name }} ({{ p.size }} Mo)</option>
<option value="{{ p.path }}">v{{ p.version }} — {{ p.name }} ({{ p.size }} Mo)</option>
{% endfor %}
{% if not packages.deb %}<option value="">Aucun package .deb</option>{% endif %}
</select>
@ -48,7 +48,7 @@
<label class="text-xs text-gray-500 block mb-1">Package RPM (RHEL/CentOS)</label>
<select id="package_rpm" class="w-full text-xs">
{% for p in packages.rpm %}
<option value="{{ p.path }}">{{ p.name }} ({{ p.size }} Mo)</option>
<option value="{{ p.path }}">v{{ p.version }} — {{ p.name }} ({{ p.size }} Mo)</option>
{% endfor %}
{% if not packages.rpm %}<option value="">Aucun package .rpm</option>{% endif %}
</select>
@ -61,12 +61,12 @@
<input type="text" x-model="filter" placeholder="Rechercher hostname..." class="text-xs" style="width:200px">
<select x-model="filterDom" class="text-xs" style="width:150px">
<option value="">Tous domaines</option>
{% set doms = servers|map(attribute='domain')|unique|sort %}
{% set doms = servers|map(attribute='domain')|select('string')|unique|sort %}
{% for d in doms %}{% if d %}<option>{{ d }}</option>{% endif %}{% endfor %}
</select>
<select x-model="filterEnv" class="text-xs" style="width:150px">
<option value="">Tous envs</option>
{% set envs = servers|map(attribute='env')|unique|sort %}
{% set envs = servers|map(attribute='env')|select('string')|unique|sort %}
{% for e in envs %}{% if e %}<option>{{ e }}</option>{% endif %}{% endfor %}
</select>
<select x-model="filterOs" class="text-xs" style="width:120px">