From e769fc904cf35e188f2a53c999b4ea6e10168122 Mon Sep 17 00:00:00 2001 From: Nick Anderson Date: Wed, 19 Nov 2025 15:13:19 -0600 Subject: [PATCH] Refactored cfe_autorun_inventory_packages to dynamically identify use of package_module inventory This change makes detection of package_module based inventory dynamic. The bundle is retained so we continue to generate package inventory data for aix and the platforms supported by body package_method generic. Ticket: ENT-13525 Changelog: Title --- inventory/any.cf | 7 +++++-- .../11_old/unsafe/12_packagesmatching.cf | 17 +++++++++++++++-- .../11_old/unsafe/package-inventory.cf | 17 +++++++++++++++-- .../inventory_packages_update_frequency.cf | 17 +++++++++++++++-- 4 files changed, 50 insertions(+), 8 deletions(-) diff --git a/inventory/any.cf b/inventory/any.cf index e3e0a58b92..06c4bf3125 100644 --- a/inventory/any.cf +++ b/inventory/any.cf @@ -1107,7 +1107,11 @@ bundle agent cfe_autorun_inventory_packages fileexists("$(sys.workdir)/state/software_packages.csv"), }; - "use_package_module_for_inventory" or => { "redhat", "debian", "suse", "sles", "alpinelinux", "windows" }; + "use_package_module_for_inventory" -> { "ENT-13525" } + expression => some (".*", "@(default:control_common.package_inventory)"), + comment => concat( "If body common control defines package_inventory then the system", + " is using package modules for inventory"); + "use_package_method_for_inventory" or => { "gentoo", "aix" }; "use_package_method_generic_for_inventory" not => "use_package_module_for_inventory|use_package_method_for_inventory"; @@ -1151,7 +1155,6 @@ bundle agent cfe_autorun_inventory_packages "DEBUG $(this.bundle): we don't have the inventory files." if => "!have_inventory"; } - bundle agent cfe_autorun_inventory_policy_servers # @brief Inventory policy servers { diff --git a/tests/acceptance/17_packages/11_old/unsafe/12_packagesmatching.cf b/tests/acceptance/17_packages/11_old/unsafe/12_packagesmatching.cf index ef382f271b..af0e4c4c4c 100644 --- a/tests/acceptance/17_packages/11_old/unsafe/12_packagesmatching.cf +++ b/tests/acceptance/17_packages/11_old/unsafe/12_packagesmatching.cf @@ -31,18 +31,31 @@ body common control bundle agent init { + vars: + + # if we have the patches, 7 days; otherwise keep trying + "refresh" string => ifelse("have_inventory", "10080", + "0"); + classes: + "have_patches" or => { "community_edition", # not in Community + fileexists("$(sys.workdir)/state/software_patches_avail.csv") }; + + "have_inventory" and => { "have_patches", + fileexists("$(sys.workdir)/state/software_packages.csv"), + }; + packages: # Old way of forcing package updates, for the legacy packages promise. debian:: "cfe_internal_non_existing_package" package_policy => "add", - package_method => inventory_apt_get($(cfe_autorun_inventory_packages.refresh)), + package_method => inventory_apt_get($(refresh)), action => if_elapsed_day; redhat:: "cfe_internal_non_existing_package" package_policy => "add", - package_method => inventory_yum_rpm($(cfe_autorun_inventory_packages.refresh)), + package_method => inventory_yum_rpm($(refresh)), action => if_elapsed_day; vars: diff --git a/tests/acceptance/17_packages/11_old/unsafe/package-inventory.cf b/tests/acceptance/17_packages/11_old/unsafe/package-inventory.cf index c157dabb48..0bdf426727 100644 --- a/tests/acceptance/17_packages/11_old/unsafe/package-inventory.cf +++ b/tests/acceptance/17_packages/11_old/unsafe/package-inventory.cf @@ -28,18 +28,31 @@ bundle agent init bundle agent test { + vars: + + # if we have the patches, 7 days; otherwise keep trying + "refresh" string => ifelse("have_inventory", "10080", + "0"); + classes: + "have_patches" or => { "community_edition", # not in Community + fileexists("$(sys.workdir)/state/software_patches_avail.csv") }; + + "have_inventory" and => { "have_patches", + fileexists("$(sys.workdir)/state/software_packages.csv"), + }; + packages: # Old way of forcing package updates, for the legacy packages promise. debian:: "cfe_internal_non_existing_package" package_policy => "add", - package_method => inventory_apt_get($(cfe_autorun_inventory_packages.refresh)), + package_method => inventory_apt_get($(refresh)), action => if_elapsed_day; redhat:: "cfe_internal_non_existing_package" package_policy => "add", - package_method => inventory_yum_rpm($(cfe_autorun_inventory_packages.refresh)), + package_method => inventory_yum_rpm($(refresh)), action => if_elapsed_day; methods: diff --git a/tests/acceptance/17_packages/11_old/unsafe/timed/inventory_packages_update_frequency.cf b/tests/acceptance/17_packages/11_old/unsafe/timed/inventory_packages_update_frequency.cf index f900104e4e..cc13efaf43 100644 --- a/tests/acceptance/17_packages/11_old/unsafe/timed/inventory_packages_update_frequency.cf +++ b/tests/acceptance/17_packages/11_old/unsafe/timed/inventory_packages_update_frequency.cf @@ -13,18 +13,31 @@ body common control bundle agent init { + vars: + + # if we have the patches, 7 days; otherwise keep trying + "refresh" string => ifelse("have_inventory", "10080", + "0"); + classes: + "have_patches" or => { "community_edition", # not in Community + fileexists("$(sys.workdir)/state/software_patches_avail.csv") }; + + "have_inventory" and => { "have_patches", + fileexists("$(sys.workdir)/state/software_packages.csv"), + }; + packages: # Old way of forcing package updates, for the legacy packages promise. debian:: "cfe_internal_non_existing_package" package_policy => "add", - package_method => inventory_apt_get($(cfe_autorun_inventory_packages.refresh)), + package_method => inventory_apt_get($(refresh)), action => if_elapsed_day; redhat:: "cfe_internal_non_existing_package" package_policy => "add", - package_method => inventory_yum_rpm($(cfe_autorun_inventory_packages.refresh)), + package_method => inventory_yum_rpm($(refresh)), action => if_elapsed_day; }