From 07235eb7a33b1821b2b260b31866c7e7c470ac6f Mon Sep 17 00:00:00 2001 From: egvimo Date: Sat, 21 Oct 2023 19:30:01 +0200 Subject: [PATCH] feat: update apt_info.py from upstream --- apt_info.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/apt_info.py b/apt_info.py index 7f562d0..51d1e06 100644 --- a/apt_info.py +++ b/apt_info.py @@ -3,6 +3,18 @@ # Description: Expose metrics from apt. This is inspired by and # intended to be a replacement for the original apt.sh. # +# This script deliberately does *not* update the apt cache. You need +# something else to run `apt update` regularly for the metrics to be +# up to date. This can be done in numerous ways, but the canonical way +# is to use the normal `APT::Periodic::Update-Package-Lists` +# setting. +# +# This, for example, will enable a nightly job that runs `apt update`: +# +# echo 'APT::Periodic::Update-Package-Lists "1";' > /etc/apt/apt.conf.d/99_auto_apt_update.conf +# +# See /usr/lib/apt/apt.systemd.daily for details. +# # Dependencies: python3-apt, python3-prometheus-client # # Authors: Kyle Fazzari @@ -12,7 +24,6 @@ import argparse import collections -import contextlib import os import apt from prometheus_client import CollectorRegistry, Gauge, generate_latest @@ -85,24 +96,13 @@ def _write_reboot_required(registry, root_dir): def generate_metrics(root_dir: str = '/') -> bytes: cache = apt.cache.Cache(rootdir=root_dir) - - # First of all, attempt to update the index. If we don't have permission - # to do so (or it fails for some reason), it's not the end of the world, - # we'll operate on the old index. - with contextlib.suppress(apt.cache.LockFailedException, apt.cache.FetchFailedException): - cache.update() - - cache.open() - cache.upgrade(True) - registry = CollectorRegistry() + _write_pending_upgrades(registry, cache) _write_held_upgrades(registry, cache) _write_autoremove_pending(registry, cache) _write_reboot_required(registry, root_dir) - cache.close() - return generate_latest(registry)