Fix deploy page: NoneType sort + version extraite du nom fichier dans dropdown
This commit is contained in:
parent
3d053019e6
commit
6411774004
@ -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}'")
|
||||
|
||||
@ -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">
|
||||
|
||||
Loading…
Reference in New Issue
Block a user