From 38516cba14ec3c5a1acdce40d6f5f59b7d2d3248 Mon Sep 17 00:00:00 2001
From: Tim Meusel <tim@bastelfreak.de>
Date: Wed, 2 Dec 2020 17:38:19 +0100
Subject: [PATCH] (FACT-2880) fact: call Puppet within setcode block

This change is a result of https://tickets.puppetlabs.com/browse/FACT-2880

previous to this change, we called Puppet outside the setcode block.
This works fine on Facter 3. On Facter 4 this sets the service_provider
fact to `base`. Moving the code into the setcode block fixes it.
---
 lib/facter/alert_manager_running.rb | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/facter/alert_manager_running.rb b/lib/facter/alert_manager_running.rb
index 24856c388..1e0019279 100644
--- a/lib/facter/alert_manager_running.rb
+++ b/lib/facter/alert_manager_running.rb
@@ -1,10 +1,9 @@
 require 'puppet'
 
-service = Puppet::Type.type(:service).new(:name => 'alert_manager') # rubocop:disable Style/HashSyntax
-
 Facter.add('prometheus_alert_manager_running') do
   setcode do
     begin
+      service = Puppet::Type.type(:service).new(:name => 'alert_manager') # rubocop:disable Style/HashSyntax
       service.provider.status == :running
     rescue Puppet::Error
       false