#!/usr/bin/python3
#
# Univention Monitoring Plugin
#  check_package_status: check dpkg status
#
# SPDX-FileCopyrightText: 2017-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only

from univention.monitoring import Alert


class PackageStatus(Alert):

    def write_metrics(self):
        # Find half-configured (exit 1 in postinst) and half-installed packages (exit 1 in postrm)
        _rc, output = self.exec_command("dpkg-query -f '${status} ${package}\n' -W | awk '$3 ~ \"half\" {printf $4 \" \"}'", shell=True)
        self.write_metric('univention_package_status_ok', 0 if output else 1)
        if output:
            self.log.debug(output)


if __name__ == '__main__':
    PackageStatus.main()
