openvox 9.0.0.pre.beta2 → 9.0.0.pre.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +91 -26
  3. data/Gemfile +5 -3
  4. data/Gemfile.lock +666 -0
  5. data/HISTORY.md +311 -0
  6. data/Rakefile +5 -6
  7. data/ext/debian/puppet.default +2 -2
  8. data/ext/debian/puppet.init +2 -2
  9. data/ext/windows/service/daemon.rb +1 -2
  10. data/lib/hiera/scope.rb +0 -2
  11. data/lib/puppet/agent/disabler.rb +1 -1
  12. data/lib/puppet/agent/locker.rb +1 -1
  13. data/lib/puppet/agent.rb +79 -7
  14. data/lib/puppet/application/agent.rb +19 -4
  15. data/lib/puppet/application/ssl.rb +7 -6
  16. data/lib/puppet/application.rb +1 -2
  17. data/lib/puppet/configurer/fact_handler.rb +5 -1
  18. data/lib/puppet/confine.rb +1 -2
  19. data/lib/puppet/environments.rb +3 -12
  20. data/lib/puppet/face/epp.rb +0 -2
  21. data/lib/puppet/file_bucket/dipper.rb +0 -2
  22. data/lib/puppet/file_serving/content.rb +1 -2
  23. data/lib/puppet/file_serving/mount.rb +1 -2
  24. data/lib/puppet/functions/tree_each.rb +1 -1
  25. data/lib/puppet/generate/type.rb +1 -1
  26. data/lib/puppet/gettext/config.rb +0 -2
  27. data/lib/puppet/graph/simple_graph.rb +0 -2
  28. data/lib/puppet/http/service.rb +46 -17
  29. data/lib/puppet/indirector/facts/facter.rb +13 -12
  30. data/lib/puppet/indirector/file_bucket_file/file.rb +0 -2
  31. data/lib/puppet/interface/action.rb +1 -1
  32. data/lib/puppet/module.rb +1 -6
  33. data/lib/puppet/node.rb +5 -1
  34. data/lib/puppet/parser/ast.rb +1 -2
  35. data/lib/puppet/parser/compiler/catalog_validator.rb +1 -2
  36. data/lib/puppet/parser/files.rb +0 -2
  37. data/lib/puppet/parser/resource.rb +0 -4
  38. data/lib/puppet/parser/scope.rb +1 -5
  39. data/lib/puppet/pops/adaptable.rb +0 -2
  40. data/lib/puppet/pops/loader/base_loader.rb +0 -2
  41. data/lib/puppet/pops/loader/loader.rb +0 -2
  42. data/lib/puppet/pops/loader/runtime3_type_loader.rb +0 -2
  43. data/lib/puppet/pops/loaders.rb +0 -2
  44. data/lib/puppet/pops/lookup/hiera_config.rb +0 -2
  45. data/lib/puppet/pops/lookup/interpolation.rb +0 -2
  46. data/lib/puppet/pops/lookup/key_recorder.rb +2 -4
  47. data/lib/puppet/pops/lookup/lookup_key.rb +0 -2
  48. data/lib/puppet/pops/merge_strategy.rb +1 -1
  49. data/lib/puppet/pops/migration/migration_checker.rb +1 -2
  50. data/lib/puppet/pops/parser/lexer2.rb +2 -2
  51. data/lib/puppet/pops/parser/lexer_support.rb +0 -2
  52. data/lib/puppet/pops/parser/locatable.rb +2 -4
  53. data/lib/puppet/pops/parser/locator.rb +9 -18
  54. data/lib/puppet/pops/puppet_stack.rb +1 -1
  55. data/lib/puppet/pops/time/timespan.rb +0 -2
  56. data/lib/puppet/pops/types/class_loader.rb +1 -3
  57. data/lib/puppet/pops/types/iterable.rb +0 -2
  58. data/lib/puppet/pops/types/p_runtime_type.rb +0 -2
  59. data/lib/puppet/pops/types/p_timespan_type.rb +1 -3
  60. data/lib/puppet/pops/types/puppet_object.rb +2 -4
  61. data/lib/puppet/pops/types/type_acceptor.rb +1 -2
  62. data/lib/puppet/pops/types/type_factory.rb +1 -1
  63. data/lib/puppet/pops/types/types.rb +1 -8
  64. data/lib/puppet/pops/utils.rb +0 -6
  65. data/lib/puppet/pops/validation/checker4_0.rb +2 -6
  66. data/lib/puppet/pops/visitor.rb +1 -1
  67. data/lib/puppet/property/ensure.rb +0 -4
  68. data/lib/puppet/provider/nameservice.rb +0 -2
  69. data/lib/puppet/provider/network_device.rb +1 -2
  70. data/lib/puppet/provider/package/pkgdmg.rb +0 -2
  71. data/lib/puppet/provider/package/portage.rb +1 -1
  72. data/lib/puppet/provider/package/portupgrade.rb +2 -2
  73. data/lib/puppet/provider/parsedfile.rb +0 -2
  74. data/lib/puppet/provider/service/base.rb +2 -4
  75. data/lib/puppet/provider/service/launchd.rb +1 -1
  76. data/lib/puppet/provider/service/openwrt.rb +1 -2
  77. data/lib/puppet/provider/service/service.rb +1 -2
  78. data/lib/puppet/provider/service/smf.rb +6 -6
  79. data/lib/puppet/provider/service/systemd.rb +0 -41
  80. data/lib/puppet/provider/service/upstart.rb +1 -1
  81. data/lib/puppet/provider/user/directoryservice.rb +3 -5
  82. data/lib/puppet/reference/metaparameter.rb +1 -1
  83. data/lib/puppet/settings.rb +0 -2
  84. data/lib/puppet/test/test_helper.rb +1 -2
  85. data/lib/puppet/transaction/event.rb +0 -1
  86. data/lib/puppet/transaction/persistence.rb +0 -2
  87. data/lib/puppet/type/component.rb +1 -2
  88. data/lib/puppet/type/file.rb +1 -3
  89. data/lib/puppet/type/resources.rb +0 -2
  90. data/lib/puppet/type/user.rb +0 -2
  91. data/lib/puppet/type.rb +4 -15
  92. data/lib/puppet/util/at_fork/noop.rb +3 -6
  93. data/lib/puppet/util/fileparsing.rb +0 -6
  94. data/lib/puppet/util/filetype.rb +0 -2
  95. data/lib/puppet/util/ldap/generator.rb +0 -2
  96. data/lib/puppet/util/network_device/transport/base.rb +2 -4
  97. data/lib/puppet/util/rdoc/code_objects.rb +1 -1
  98. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +3 -2
  99. data/lib/puppet/util/selinux.rb +16 -1
  100. data/lib/puppet/util/symbolic_file_mode.rb +2 -2
  101. data/lib/puppet/util/windows/file.rb +0 -1
  102. data/lib/puppet/version.rb +1 -1
  103. data/man/man8/puppet-agent.8 +7 -3
  104. data/tasks/vox.rake +2 -2
  105. metadata +4 -2
data/HISTORY.md ADDED
@@ -0,0 +1,311 @@
1
+ ## [8.28.1](https://github.com/openvoxproject/openvox/tree/8.28.1) (2026-07-07)
2
+
3
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.28.0...8.28.1)
4
+
5
+ **Fixed bugs:**
6
+
7
+ - \[Bug\]: ca\_refresh\_interval is not respected — agent refreshes CA on every run when server responds 304 [\#435](https://github.com/OpenVoxProject/openvox/issues/435)
8
+ - \[Bug\]: Puppet 8 introduced a regex node definition regression [\#14](https://github.com/OpenVoxProject/openvox/issues/14)
9
+
10
+ **Closed issues:**
11
+
12
+ - \[Deprecation\] `Puppet::SSL::Certificate` Class [\#344](https://github.com/OpenVoxProject/openvox/issues/344)
13
+ - \[Deprecation\] PAL Script Evaluation APIs [\#343](https://github.com/OpenVoxProject/openvox/issues/343)
14
+ - \[Deprecation\] `source_permissions` File Parameter [\#340](https://github.com/OpenVoxProject/openvox/issues/340)
15
+ - \[Deprecation\] `pluginsync` Setting [\#339](https://github.com/OpenVoxProject/openvox/issues/339)
16
+ - \[Deprecation\] `configprint` Setting [\#337](https://github.com/OpenVoxProject/openvox/issues/337)
17
+ - \[Deprecation\] `regsubst()` Encoding Argument [\#336](https://github.com/OpenVoxProject/openvox/issues/336)
18
+
19
+ ## [8.28.0](https://github.com/openvoxproject/openvox/tree/8.28.0) (2026-06-10)
20
+
21
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.27.0...8.28.0)
22
+
23
+ **Implemented enhancements:**
24
+
25
+ - Add platform definitions for Fedora 44 [\#455](https://github.com/OpenVoxProject/openvox/pull/455) ([Sharpie](https://github.com/Sharpie))
26
+ - Promote openfact 5.6.1 into main [\#436](https://github.com/OpenVoxProject/openvox/pull/436) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
27
+
28
+ **Fixed bugs:**
29
+
30
+ - avoid badly anchored regular expression [\#414](https://github.com/OpenVoxProject/openvox/pull/414) ([corporate-gadfly](https://github.com/corporate-gadfly))
31
+
32
+ **Merged pull requests:**
33
+
34
+ - Promote puppet-runtime 2026.05.20.1 into main [\#453](https://github.com/OpenVoxProject/openvox/pull/453) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
35
+ - Switch from puppet-strings to openvox-strings [\#434](https://github.com/OpenVoxProject/openvox/pull/434) ([tuxmea](https://github.com/tuxmea))
36
+ - Update acceptance defaults and descriptions for OpenVox 9 [\#431](https://github.com/OpenVoxProject/openvox/pull/431) ([nmburgan](https://github.com/nmburgan))
37
+ - Promote puppet-runtime 2026.05.07.1 into main [\#429](https://github.com/OpenVoxProject/openvox/pull/429) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
38
+ - Change branch name in promote workflow [\#428](https://github.com/OpenVoxProject/openvox/pull/428) ([nmburgan](https://github.com/nmburgan))
39
+ - Changes to prepare for 8.x branching [\#425](https://github.com/OpenVoxProject/openvox/pull/425) ([nmburgan](https://github.com/nmburgan))
40
+ - Add release version check and stop trying to bump to an RC version [\#413](https://github.com/OpenVoxProject/openvox/pull/413) ([nmburgan](https://github.com/nmburgan))
41
+
42
+ ## [8.27.0](https://github.com/openvoxproject/openvox/tree/8.27.0) (2026-05-15)
43
+
44
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.26.2...8.27.0)
45
+
46
+ ## [8.26.2](https://github.com/openvoxproject/openvox/tree/8.26.2) (2026-04-18)
47
+
48
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.26.1...8.26.2)
49
+
50
+ **Fixed bugs:**
51
+
52
+ - \[Bug\]: `provides puppet-agent` uses bare major version, breaking `>= x.y.z` dependency constraints \(e.g. foreman-installer\) [\#406](https://github.com/OpenVoxProject/openvox/issues/406)
53
+ - Revert "Add syslog as a runtime dependency" [\#410](https://github.com/OpenVoxProject/openvox/pull/410) ([nmburgan](https://github.com/nmburgan))
54
+ - \(\#406\) packaging: Set Maj.Min.Patch version as `provides` instead of major one [\#407](https://github.com/OpenVoxProject/openvox/pull/407) ([bastelfreak](https://github.com/bastelfreak))
55
+
56
+ **Merged pull requests:**
57
+
58
+ - Promote puppet-runtime 2026.04.17.1 [\#411](https://github.com/OpenVoxProject/openvox/pull/411) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
59
+ - .gitignore: Ignore /acceptance/.vendor [\#408](https://github.com/OpenVoxProject/openvox/pull/408) ([bastelfreak](https://github.com/bastelfreak))
60
+
61
+ ## [8.26.1](https://github.com/openvoxproject/openvox/tree/8.26.1) (2026-04-15)
62
+
63
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.26.0...8.26.1)
64
+
65
+ **Merged pull requests:**
66
+
67
+ - Promote puppet-runtime 2026.04.15.1 [\#404](https://github.com/OpenVoxProject/openvox/pull/404) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
68
+ - Add signoff to promote action [\#402](https://github.com/OpenVoxProject/openvox/pull/402) ([nmburgan](https://github.com/nmburgan))
69
+ - Add syslog as a runtime dependency [\#400](https://github.com/OpenVoxProject/openvox/pull/400) ([nmburgan](https://github.com/nmburgan))
70
+ - acceptance: add hiera-eyaml v5 backend test [\#399](https://github.com/OpenVoxProject/openvox/pull/399) ([nmburgan](https://github.com/nmburgan))
71
+ - avoid command injection risk [\#398](https://github.com/OpenVoxProject/openvox/pull/398) ([corporate-gadfly](https://github.com/corporate-gadfly))
72
+
73
+ ## [8.26.0](https://github.com/openvoxproject/openvox/tree/8.26.0) (2026-04-14)
74
+
75
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.25.0...8.26.0)
76
+
77
+ **Implemented enhancements:**
78
+
79
+ - \[Feature request\]: file resource should support etag [\#328](https://github.com/OpenVoxProject/openvox/issues/328)
80
+ - \[Feature request\]: Provide SLES16 packages [\#246](https://github.com/OpenVoxProject/openvox/issues/246)
81
+ - Add a renew\_cert subcommand to puppet ssl [\#363](https://github.com/OpenVoxProject/openvox/pull/363) ([jay7x](https://github.com/jay7x))
82
+ - Make regsubst\(\) sensitive-aware [\#354](https://github.com/OpenVoxProject/openvox/pull/354) ([cocker-cc](https://github.com/cocker-cc))
83
+ - Feature: file etag support [\#329](https://github.com/OpenVoxProject/openvox/pull/329) ([C24-AK](https://github.com/C24-AK))
84
+ - Add environment parameter to the package resource type [\#321](https://github.com/OpenVoxProject/openvox/pull/321) ([C24-AK](https://github.com/C24-AK))
85
+
86
+ **Fixed bugs:**
87
+
88
+ - \[Bug\]: OpenVox Agent on SuSE 15.5 fails with `version 'GLIBC_2.34' not found` [\#226](https://github.com/OpenVoxProject/openvox/issues/226)
89
+ - fix: puppet module install should honor manage\_file\_permissions=false [\#362](https://github.com/OpenVoxProject/openvox/pull/362) ([dotconfig404](https://github.com/dotconfig404))
90
+ - unbreak OpenBSD package handling. [\#316](https://github.com/OpenVoxProject/openvox/pull/316) ([buzzdeee](https://github.com/buzzdeee))
91
+ - Use usermod\(8\) on OpenBSD to unbreak password management [\#294](https://github.com/OpenVoxProject/openvox/pull/294) ([klemensn](https://github.com/klemensn))
92
+
93
+ **Merged pull requests:**
94
+
95
+ - Promote openfact 5.6.0 [\#387](https://github.com/OpenVoxProject/openvox/pull/387) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
96
+ - Promote puppet-runtime 2026.04.09.1 [\#386](https://github.com/OpenVoxProject/openvox/pull/386) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
97
+ - fix: skip SHA1 CSR signing test when OpenSSL doesn't support it [\#378](https://github.com/OpenVoxProject/openvox/pull/378) ([silug](https://github.com/silug))
98
+ - fix: stub SRV DNS in ca\_server session spec [\#377](https://github.com/OpenVoxProject/openvox/pull/377) ([silug](https://github.com/silug))
99
+ - Fix acceptance tests for systemd PrivateTmp compatibility [\#376](https://github.com/OpenVoxProject/openvox/pull/376) ([nmburgan](https://github.com/nmburgan))
100
+ - Fix acceptance tests for systemd PrivateTmp compatibility [\#375](https://github.com/OpenVoxProject/openvox/pull/375) ([nmburgan](https://github.com/nmburgan))
101
+ - Add libffi-devel to Windows setup script [\#373](https://github.com/OpenVoxProject/openvox/pull/373) ([nmburgan](https://github.com/nmburgan))
102
+ - Promote puppet-runtime 2026.04.05.1 [\#372](https://github.com/OpenVoxProject/openvox/pull/372) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
103
+ - Restore the legend of help help help help help [\#364](https://github.com/OpenVoxProject/openvox/pull/364) ([nmburgan](https://github.com/nmburgan))
104
+ - Fixes for Ruby 4.0 compatibility [\#311](https://github.com/OpenVoxProject/openvox/pull/311) ([silug](https://github.com/silug))
105
+
106
+ ## [8.25.0](https://github.com/openvoxproject/openvox/tree/8.25.0) (2026-02-17)
107
+
108
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.24.2...8.25.0)
109
+
110
+ **Implemented enhancements:**
111
+
112
+ - \[Feature request\]: environment parameter for package resource [\#298](https://github.com/OpenVoxProject/openvox/issues/298)
113
+ - Add Ubuntu 26.04 support [\#315](https://github.com/OpenVoxProject/openvox/pull/315) ([bastelfreak](https://github.com/bastelfreak))
114
+ - Reduce OpenSSL monkey patch to only calling set\_params [\#308](https://github.com/OpenVoxProject/openvox/pull/308) ([ekohl](https://github.com/ekohl))
115
+ - Remove monkey patch to remove daemonize [\#307](https://github.com/OpenVoxProject/openvox/pull/307) ([ekohl](https://github.com/ekohl))
116
+ - Add SLES 16 ARM64 support [\#306](https://github.com/OpenVoxProject/openvox/pull/306) ([bastelfreak](https://github.com/bastelfreak))
117
+ - Add SLES16 [\#302](https://github.com/OpenVoxProject/openvox/pull/302) ([sbernhard](https://github.com/sbernhard))
118
+ - Drop multi\_json support [\#293](https://github.com/OpenVoxProject/openvox/pull/293) ([ekohl](https://github.com/ekohl))
119
+ - Do not explicitly disable SSLv3 [\#287](https://github.com/OpenVoxProject/openvox/pull/287) ([smortex](https://github.com/smortex))
120
+ - feat: add `{debian13,ubuntu24.04,ubuntu25.04}-armhf` platform configs [\#286](https://github.com/OpenVoxProject/openvox/pull/286) ([Gitii](https://github.com/Gitii))
121
+
122
+ **Fixed bugs:**
123
+
124
+ - \[Bug\]: OpenVox Agent fails/gets deactivated after update with theforeman-puppet [\#279](https://github.com/OpenVoxProject/openvox/issues/279)
125
+ - Include missing EC2 stub request [\#272](https://github.com/OpenVoxProject/openvox/pull/272) ([eciii](https://github.com/eciii))
126
+
127
+ **Merged pull requests:**
128
+
129
+ - Promote puppet-runtime 2026.02.16.1 [\#324](https://github.com/OpenVoxProject/openvox/pull/324) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
130
+ - Promote openfact 5.4.0 [\#322](https://github.com/OpenVoxProject/openvox/pull/322) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
131
+ - Promote puppet-runtime 2026.02.06.1 [\#313](https://github.com/OpenVoxProject/openvox/pull/313) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
132
+ - puppet-runtime: Update 2025.12.05.1-\>2026.01.30.1 [\#305](https://github.com/OpenVoxProject/openvox/pull/305) ([bastelfreak](https://github.com/bastelfreak))
133
+ - Promote openssl-fips 2025.12.17.1 [\#284](https://github.com/OpenVoxProject/openvox/pull/284) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
134
+ - Update promotion action [\#283](https://github.com/OpenVoxProject/openvox/pull/283) ([nmburgan](https://github.com/nmburgan))
135
+
136
+ ## [8.24.2](https://github.com/openvoxproject/openvox/tree/8.24.2) (2025-12-15)
137
+
138
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.24.1...8.24.2)
139
+
140
+ **Fixed bugs:**
141
+
142
+ - \[Bug\]: Version 8.24.0 fails with Error: Could not find a suitable provider for augeas [\#262](https://github.com/OpenVoxProject/openvox/issues/262)
143
+
144
+ **Merged pull requests:**
145
+
146
+ - Promote openfact 5.2.1 [\#277](https://github.com/OpenVoxProject/openvox/pull/277) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
147
+ - Relax version requirements for some default gems [\#275](https://github.com/OpenVoxProject/openvox/pull/275) ([nmburgan](https://github.com/nmburgan))
148
+
149
+ ## [8.24.1](https://github.com/openvoxproject/openvox/tree/8.24.1) (2025-12-05)
150
+
151
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.24.0...8.24.1)
152
+
153
+ **Fixed bugs:**
154
+
155
+ - \[Bug\]: sysctl augeas broken after upgrade to Version 8.24.0 [\#264](https://github.com/OpenVoxProject/openvox/issues/264)
156
+ - \[Bug\]: Augeas broken since openvox 8.24.0, missing augeas/facade [\#263](https://github.com/OpenVoxProject/openvox/issues/263)
157
+
158
+ **Merged pull requests:**
159
+
160
+ - Promote puppet-runtime 2025.12.05.1 [\#266](https://github.com/OpenVoxProject/openvox/pull/266) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
161
+ - Update augeas test to detect provider failure [\#265](https://github.com/OpenVoxProject/openvox/pull/265) ([nmburgan](https://github.com/nmburgan))
162
+ - Add dbus feature [\#261](https://github.com/OpenVoxProject/openvox/pull/261) ([ananace](https://github.com/ananace))
163
+
164
+ ## [8.24.0](https://github.com/openvoxproject/openvox/tree/8.24.0) (2025-12-04)
165
+
166
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.23.1...8.24.0)
167
+
168
+ **Implemented enhancements:**
169
+
170
+ - Loosen some gem dependencies for new versions and update minitar usage [\#242](https://github.com/OpenVoxProject/openvox/pull/242) ([nmburgan](https://github.com/nmburgan))
171
+ - Create execution\_wrapper.bat to allow Choria to work with Windows [\#222](https://github.com/OpenVoxProject/openvox/pull/222) ([magarvo](https://github.com/magarvo))
172
+ - feat: add opkg package management support for TurrisOS [\#221](https://github.com/OpenVoxProject/openvox/pull/221) ([VILJkid](https://github.com/VILJkid))
173
+ - Add jruby-9.4.14.0 to CI matrix [\#210](https://github.com/OpenVoxProject/openvox/pull/210) ([bastelfreak](https://github.com/bastelfreak))
174
+
175
+ **Fixed bugs:**
176
+
177
+ - \[Bug\]: `implementation` is just a local fact [\#220](https://github.com/OpenVoxProject/openvox/issues/220)
178
+ - \[Bug\]: puppet apply warns about missing client certificates [\#21](https://github.com/OpenVoxProject/openvox/issues/21)
179
+
180
+ **Merged pull requests:**
181
+
182
+ - Promote openfact 5.2.0 [\#258](https://github.com/OpenVoxProject/openvox/pull/258) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
183
+ - Promote openfact 6a26ce51cf65f7cc325330c40922e9556651cf35 [\#257](https://github.com/OpenVoxProject/openvox/pull/257) ([OpenVoxProjectBot](https://github.com/OpenVoxProjectBot))
184
+ - Use PR for promotion action [\#255](https://github.com/OpenVoxProject/openvox/pull/255) ([nmburgan](https://github.com/nmburgan))
185
+ - Use token when checking out repo [\#254](https://github.com/OpenVoxProject/openvox/pull/254) ([nmburgan](https://github.com/nmburgan))
186
+ - Add promote action [\#253](https://github.com/OpenVoxProject/openvox/pull/253) ([nmburgan](https://github.com/nmburgan))
187
+ - Update release automation [\#252](https://github.com/OpenVoxProject/openvox/pull/252) ([nmburgan](https://github.com/nmburgan))
188
+ - add note about server\_list precedence [\#251](https://github.com/OpenVoxProject/openvox/pull/251) ([binford2k](https://github.com/binford2k))
189
+ - Fix description of `source` since `yum` allows it now [\#249](https://github.com/OpenVoxProject/openvox/pull/249) ([binford2k](https://github.com/binford2k))
190
+ - include "local" facts in facts output [\#240](https://github.com/OpenVoxProject/openvox/pull/240) ([binford2k](https://github.com/binford2k))
191
+ - Correct homepage in gemspec [\#223](https://github.com/OpenVoxProject/openvox/pull/223) ([ekohl](https://github.com/ekohl))
192
+ - CI: Build gem for each PR & Move packaging checks to global config & Windows: Run one spec file per CPU core [\#216](https://github.com/OpenVoxProject/openvox/pull/216) ([bastelfreak](https://github.com/bastelfreak))
193
+ - Add switch for uploading to S3 [\#212](https://github.com/OpenVoxProject/openvox/pull/212) ([nmburgan](https://github.com/nmburgan))
194
+ - Update acceptance workflow for changed beaker acceptance [\#209](https://github.com/OpenVoxProject/openvox/pull/209) ([jpartlow](https://github.com/jpartlow))
195
+ - `yum` package provider: add `assumeyes` to `yum check-update` [\#188](https://github.com/OpenVoxProject/openvox/pull/188) ([SvenVD-be](https://github.com/SvenVD-be))
196
+ - Prevents spurious clientcert warnings in serverless mode [\#22](https://github.com/OpenVoxProject/openvox/pull/22) ([binford2k](https://github.com/binford2k))
197
+
198
+ ## [8.23.1](https://github.com/openvoxproject/openvox/tree/8.23.1) (2025-09-08)
199
+
200
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.23.0...8.23.1)
201
+
202
+ **Fixed bugs:**
203
+
204
+ - Fix how we find the version library [\#203](https://github.com/OpenVoxProject/openvox/pull/203) ([nmburgan](https://github.com/nmburgan))
205
+
206
+ **Merged pull requests:**
207
+
208
+ - Promote puppet-runtime 2025.09.08.1 [\#204](https://github.com/OpenVoxProject/openvox/pull/204) ([nmburgan](https://github.com/nmburgan))
209
+ - Test for r10k failure condition [\#202](https://github.com/OpenVoxProject/openvox/pull/202) ([nmburgan](https://github.com/nmburgan))
210
+
211
+ ## [8.23.0](https://github.com/openvoxproject/openvox/tree/8.23.0) (2025-09-07)
212
+
213
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.22.0...8.23.0)
214
+
215
+ - This is our first release where MacOS and Windows agents are built entirely in GitHub Actions!
216
+ - MacOS x86_64 is now supported
217
+ - The MacOS agents now work on all currently supported MacOS versions (13, 14, and 15). No need for separate packages!
218
+ - The openvox-agent repo, which was the repo used for building the openvox-agent packages, has now been integrated into this openvox repo under the 'packaging' directory. This will allow us to have fewer steps in the build process and tag changes more cleanly, rather than having to tag two separate repos. Note that for releases prior to this one, the changelog in this file refers only to the changes to openvox itself and not packaging changes. For example, 8.22.1 was released to fix an unintentional service renaming issue and details are in the openvox-agent repo. At some point, we may try to integrate the two changelogs.
219
+ - This release contains a large number of dependencies bumps. Most are not security related, but many dependencies were lagging for a long time. See [this PR](https://github.com/OpenVoxProject/puppet-runtime/pull/35) for details.
220
+ - A patch for Augeas to address [CVE-2025-2588](https://github.com/advisories/GHSA-hxwj-c5vw-fwgp)
221
+
222
+ **Implemented enhancements:**
223
+
224
+ - Respect systemd's RUNTIME\_DIRECTORY environment variable [\#165](https://github.com/OpenVoxProject/openvox/pull/165) ([ekohl](https://github.com/ekohl))
225
+
226
+ **Fixed bugs:**
227
+
228
+ - treat windows service accounts as case insensitive [\#172](https://github.com/OpenVoxProject/openvox/pull/172) ([binford2k](https://github.com/binford2k))
229
+ - Ensure confdir exists [\#171](https://github.com/OpenVoxProject/openvox/pull/171) ([binford2k](https://github.com/binford2k))
230
+
231
+ **Merged pull requests:**
232
+
233
+ - Promote puppet-runtime 2025.09.04.1 [\#191](https://github.com/OpenVoxProject/openvox/pull/191) ([nmburgan](https://github.com/nmburgan))
234
+ - Merge openvox-agent vanagon repo [\#186](https://github.com/OpenVoxProject/openvox/pull/186) ([austb](https://github.com/austb))
235
+
236
+ ## [8.22.0](https://github.com/openvoxproject/openvox/tree/8.22.0) (2025-08-23)
237
+
238
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.21.1...8.22.0)
239
+
240
+ ## [8.21.1](https://github.com/openvoxproject/openvox/tree/8.21.1) (2025-07-23)
241
+
242
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.21.0...8.21.1)
243
+
244
+ **Fixed bugs:**
245
+
246
+ - Make passing invalid options to install.rb fatal [\#156](https://github.com/OpenVoxProject/openvox/pull/156) ([ekohl](https://github.com/ekohl))
247
+
248
+ **Merged pull requests:**
249
+
250
+ - Revert "Mark some failing 8.3 Windows tests as pending" [\#159](https://github.com/OpenVoxProject/openvox/pull/159) ([ekohl](https://github.com/ekohl))
251
+ - \(maint\) Drop debian-10 from testing matrix [\#152](https://github.com/OpenVoxProject/openvox/pull/152) ([jpartlow](https://github.com/jpartlow))
252
+
253
+ ## [8.21.0](https://github.com/openvoxproject/openvox/tree/8.21.0) (2025-07-09)
254
+
255
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.20.0...8.21.0)
256
+
257
+ **Implemented enhancements:**
258
+
259
+ - Remove facter from install.rb [\#147](https://github.com/OpenVoxProject/openvox/pull/147) ([ekohl](https://github.com/ekohl))
260
+
261
+ ## [8.20.0](https://github.com/openvoxproject/openvox/tree/8.20.0) (2025-06-27)
262
+
263
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.19.2...8.20.0)
264
+
265
+ **Implemented enhancements:**
266
+
267
+ - Switch from facter to openfact [\#142](https://github.com/OpenVoxProject/openvox/pull/142) ([smortex](https://github.com/smortex))
268
+ - \(PUP-12083\) Update soft limit warning for fact value & name length [\#137](https://github.com/OpenVoxProject/openvox/pull/137) ([bastelfreak](https://github.com/bastelfreak))
269
+
270
+ **Fixed bugs:**
271
+
272
+ - Maintain consistent JSON formatting [\#132](https://github.com/OpenVoxProject/openvox/pull/132) ([bastelfreak](https://github.com/bastelfreak))
273
+
274
+ **Merged pull requests:**
275
+
276
+ - cleanup gem metadata after Perforce-\>OpenVoxProject migration [\#140](https://github.com/OpenVoxProject/openvox/pull/140) ([smortex](https://github.com/smortex))
277
+
278
+ ## [8.19.2](https://github.com/openvoxproject/openvox/tree/8.19.2) (2025-06-06)
279
+
280
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.19.1...8.19.2)
281
+
282
+ **Fixed bugs:**
283
+
284
+ - server\_facts: Switch implementation-\>serverimplementation [\#107](https://github.com/OpenVoxProject/openvox/pull/107) ([binford2k](https://github.com/binford2k))
285
+ - Reflect Ruby 3.4 stack trace changes [\#100](https://github.com/OpenVoxProject/openvox/pull/100) ([ekohl](https://github.com/ekohl))
286
+ - Add base64 as gem dependencies for Ruby 3.4 [\#98](https://github.com/OpenVoxProject/openvox/pull/98) ([ekohl](https://github.com/ekohl))
287
+ - Add racc gem dependency [\#89](https://github.com/OpenVoxProject/openvox/pull/89) ([ekohl](https://github.com/ekohl))
288
+
289
+ ## [8.19.1](https://github.com/openvoxproject/openvox/tree/8.19.1) (2025-06-03)
290
+
291
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.19.0...8.19.1)
292
+
293
+ **Fixed bugs:**
294
+
295
+ - Fix invalid gemspec in AIO package [\#91](https://github.com/OpenVoxProject/openvox/pull/91) ([smortex](https://github.com/smortex))
296
+
297
+ ## [8.19.0](https://github.com/openvoxproject/openvox/tree/8.19.0) (2025-05-30)
298
+
299
+ [Full Changelog](https://github.com/openvoxproject/openvox/compare/8.18.1...8.19.0)
300
+
301
+ **Implemented enhancements:**
302
+
303
+ - Add `implementation` fact to agent and server. [\#63](https://github.com/OpenVoxProject/openvox/pull/63) ([ffrank](https://github.com/ffrank))
304
+
305
+ **Fixed bugs:**
306
+
307
+ - Replace `erase` with `remove`, since it's no longer supported with DNF5 [\#68](https://github.com/OpenVoxProject/openvox/pull/68) ([Stricken1670](https://github.com/Stricken1670))
308
+
309
+
310
+
311
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/Rakefile CHANGED
@@ -56,13 +56,12 @@ task :default do
56
56
  sh %{rake -T}
57
57
  end
58
58
 
59
- namespace :pl_ci do
59
+ namespace :ci do
60
60
  desc 'Build openvox gems'
61
61
  task :gem_build, [:gemspec] do |t, args|
62
62
  args.with_defaults(gemspec: 'openvox.gemspec')
63
63
  stdout, stderr, status = Open3.capture3(<<~END)
64
- gem build #{args.gemspec} --verbose --strict --platform x86-mingw32 && \
65
- gem build #{args.gemspec} --verbose --strict --platform x64-mingw32 && \
64
+ gem build #{args.gemspec} --verbose --strict --platform x64-mingw-ucrt && \
66
65
  gem build #{args.gemspec} --verbose --strict --platform universal-darwin && \
67
66
  gem build #{args.gemspec} --verbose --strict
68
67
  END
@@ -92,7 +91,7 @@ namespace :pl_ci do
92
91
  end
93
92
  end
94
93
  dst.flush
95
- Rake::Task['pl_ci:gem_build'].invoke(dst.path)
94
+ Rake::Task['ci:gem_build'].invoke(dst.path)
96
95
  end
97
96
  end
98
97
  end
@@ -160,9 +159,9 @@ begin
160
159
  config.user = "openvoxproject"
161
160
  config.project = "openvox"
162
161
  config.exclude_labels = %w[dependencies duplicate question invalid wontfix wont-fix modulesync skip-changelog]
163
- config.since_tag = "8.18.1"
162
+ config.since_tag = "9.0.0-alpha1"
164
163
  config.future_release = Puppet::PUPPETVERSION
165
- config.exclude_tags_regex = /\A7\./
164
+ config.exclude_tags_regex = /\A[7,8]\./
166
165
  end
167
166
  rescue LoadError
168
167
  task :changelog do
@@ -1,4 +1,4 @@
1
- # Defaults for puppet - sourced by /etc/init.d/puppet
1
+ # Defaults for puppet - sourced by /etc/init.d/puppet and puppet.service
2
2
 
3
3
  # Startup options
4
- DAEMON_OPTS=""
4
+ PUPPET_EXTRA_OPTS=""
@@ -9,7 +9,7 @@
9
9
  ### END INIT INFO
10
10
 
11
11
  DAEMON=/opt/puppetlabs/puppet/bin/puppet
12
- DAEMON_OPTS=""
12
+ PUPPET_EXTRA_OPTS=""
13
13
  NAME="agent"
14
14
  PROCNAME="puppet"
15
15
  DESC="puppet agent"
@@ -26,7 +26,7 @@ reload_puppet_agent() {
26
26
  }
27
27
 
28
28
  start_puppet_agent() {
29
- start-stop-daemon --start --quiet --pidfile $PIDFILE --startas $DAEMON -- $NAME $DAEMON_OPTS
29
+ start-stop-daemon --start --quiet --pidfile $PIDFILE --startas $DAEMON -- $NAME $PUPPET_EXTRA_OPTS
30
30
  }
31
31
 
32
32
  stop_puppet_agent() {
@@ -26,8 +26,7 @@ class WindowsDaemon < Puppet::Util::Windows::Daemon
26
26
  end
27
27
  end
28
28
 
29
- def service_init
30
- end
29
+ def service_init; end
31
30
 
32
31
  def service_main(*argsv)
33
32
  argsv = (argsv << ARGV).flatten.compact
data/lib/hiera/scope.rb CHANGED
@@ -80,8 +80,6 @@ class Hiera
80
80
  scope.source.name.downcase
81
81
  elsif scope.parent
82
82
  find_hostclass(scope.parent)
83
- else
84
- nil
85
83
  end
86
84
  end
87
85
  private :find_hostclass
@@ -12,7 +12,7 @@ require_relative '../../puppet/util/json_lockfile'
12
12
  # because it used by external tools such as mcollective.
13
13
  #
14
14
  # For more information, please see docs on the website.
15
- # http://links.puppet.com/agent_lockfiles
15
+ # https://docs.openvoxproject.org/openvox/latest/configuration.html#agent_catalog_run_lockfile
16
16
  module Puppet::Agent::Disabler
17
17
  DISABLED_MESSAGE_JSON_KEY = "disabled_message"
18
18
 
@@ -13,7 +13,7 @@ require_relative '../../puppet/error'
13
13
  # OpenVox API because it used by external tools such as mcollective.
14
14
  #
15
15
  # For more information, please see docs on the website.
16
- # http://links.puppet.com/agent_lockfiles
16
+ # https://docs.openvoxproject.org/openvox/latest/configuration.html#agent_catalog_run_lockfile
17
17
  module Puppet::Agent::Locker
18
18
  # Yield if we get a lock, else raise Puppet::LockError. Return
19
19
  # value of block yielded.
data/lib/puppet/agent.rb CHANGED
@@ -22,6 +22,12 @@ class Puppet::Agent
22
22
  class RunTimeoutError < Exception # rubocop:disable Lint/InheritException
23
23
  end
24
24
 
25
+ # Exit status the forked child uses to tell the daemon that the SSL state
26
+ # machine gave up waiting for a certificate, so the daemon can exit as it
27
+ # did when the wait happened in the parent. Must not collide with the
28
+ # detailed exit codes returned by a run (0, 1, 2, 4, 6) or with 254 (NoMemoryError).
29
+ CERTIFICATE_FAILURE_EXIT_STATUS = 253
30
+
25
31
  attr_reader :client_class, :client, :should_fork
26
32
 
27
33
  def initialize(client_class, should_fork = true)
@@ -60,12 +66,28 @@ class Puppet::Agent
60
66
  end
61
67
  end
62
68
 
63
- # waiting for certs may sleep for awhile depending on onetime, waitforcert and maxwaitforcert!
64
- # this needs to happen before forking so that if we fail to obtain certs and try to exit, then
65
- # we exit the main process and not the forked child.
66
- ssl_context = wait_for_certificates(client_options)
67
-
68
69
  result = run_in_fork(should_fork) do
70
+ # waiting for certs may sleep for awhile depending on onetime, waitforcert and maxwaitforcert!
71
+ #
72
+ # This happens in the forked child, not in the long-lived daemon. Refreshing
73
+ # the CRL or renewing the certificate resolves the server's name, and on
74
+ # Ruby 3.3+ that runs in short-lived native threads. If the daemon forks
75
+ # while one of those threads is exiting, the child inherits glibc's
76
+ # resolv.conf lock in the locked state and every name lookup in the run
77
+ # hangs (#485). Keeping the lookups out of the parent avoids that.
78
+ #
79
+ # The state machine calls exit when it gives up waiting for a certificate
80
+ # (waitforcert 0 or maxwaitforcert exceeded). Report that back so the
81
+ # daemon exits, as it did when the wait happened in the parent.
82
+ begin
83
+ ssl_context = wait_for_certificates(client_options)
84
+ rescue SystemExit
85
+ next CERTIFICATE_FAILURE_EXIT_STATUS
86
+ rescue StandardError => detail
87
+ Puppet.log_exception(detail, _("Could not obtain certificates: %{detail}") % { detail: detail })
88
+ next nil
89
+ end
90
+
69
91
  with_client(client_options[:transaction_uuid], client_options[:job_id]) do |client|
70
92
  client_args = client_options.merge(:pluginsync => Puppet::Configurer.should_pluginsync?)
71
93
  begin
@@ -115,6 +137,9 @@ class Puppet::Agent
115
137
  end
116
138
  end
117
139
  end
140
+ # The child could not obtain a certificate and the state machine asked to exit.
141
+ exit(1) if result == CERTIFICATE_FAILURE_EXIT_STATUS
142
+
118
143
  true
119
144
  end
120
145
  Puppet.notice _("Shutdown/restart in progress (%{status}); skipping run") % { status: Puppet::Application.run_status.inspect } unless block_run
@@ -146,8 +171,55 @@ class Puppet::Agent
146
171
  atForkHandler.parent
147
172
  end
148
173
 
149
- exit_code = Process.waitpid2(child_pid)
150
- exit_code[1].exitstatus
174
+ _, status = wait_for_child(child_pid)
175
+ status.exitstatus
176
+ end
177
+
178
+ # Wait for the forked child to exit. The child enforces `runtimeout` on its
179
+ # own run, but it may fail to exit afterwards (a stranded thread, a hung
180
+ # subprocess, etc.). Without a deadline here, the parent blocks forever and
181
+ # the agent stops checking in. Once the run timeout plus a grace period has
182
+ # elapsed, the child is killed so the daemon can carry on.
183
+ def wait_for_child(child_pid)
184
+ deadline = child_deadline
185
+ return Process.waitpid2(child_pid) unless deadline
186
+
187
+ loop do
188
+ result = Process.waitpid2(child_pid, Process::WNOHANG)
189
+ return result if result
190
+
191
+ if monotonic_now >= deadline
192
+ Puppet.err _("Agent run (pid %{pid}) did not exit within %{timeout} seconds of the run timeout, killing it") %
193
+ { pid: child_pid, timeout: child_grace_period }
194
+ begin
195
+ Process.kill(:KILL, child_pid)
196
+ rescue Errno::ESRCH
197
+ # The child exited between the last check and the kill.
198
+ end
199
+ return Process.waitpid2(child_pid)
200
+ end
201
+
202
+ sleep 1
203
+ end
204
+ end
205
+
206
+ # After the run timeout fires inside the child, it may still need to send
207
+ # its report, which is bounded by the HTTP connect and read timeouts.
208
+ def child_grace_period
209
+ Puppet[:http_connect_timeout] + Puppet[:http_read_timeout]
210
+ end
211
+
212
+ # Returns the absolute monotonic deadline for the child, or nil when
213
+ # `runtimeout` is disabled.
214
+ def child_deadline
215
+ runtimeout = Puppet[:runtimeout]
216
+ return nil if runtimeout.nil? || runtimeout <= 0
217
+
218
+ monotonic_now + runtimeout + child_grace_period
219
+ end
220
+
221
+ def monotonic_now
222
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
151
223
  end
152
224
 
153
225
  private
@@ -103,9 +103,13 @@ class Puppet::Application::Agent < Puppet::Application
103
103
  -----
104
104
  puppet agent [--certname <NAME>] [-D|--daemonize|--no-daemonize]
105
105
  [-d|--debug] [--detailed-exitcodes] [--digest <DIGEST>] [--disable [MESSAGE]] [--enable]
106
- [--fingerprint] [-h|--help] [-l|--logdest syslog|eventlog|<ABS FILEPATH>|console]
106
+ [--environment <NAME>] [--fingerprint] [-h|--help]
107
+ [-l|--logdest syslog|eventlog|<ABS FILEPATH>|console]
107
108
  [--serverport <PORT>] [--noop] [-o|--onetime] [--sourceaddress <IP_ADDRESS>] [-t|--test]
108
- [-v|--verbose] [-V|--version] [-w|--waitforcert <SECONDS>]
109
+ [-v|--verbose] [-V|--version] [-w|--waitforcert <SECONDS>] [--<setting> <VALUE>]
110
+
111
+ Any setting that is valid in puppet.conf is also accepted as a long argument,
112
+ not only the ones listed above. See OPTIONS below.
109
113
 
110
114
 
111
115
  DESCRIPTION
@@ -199,8 +203,7 @@ class Puppet::Application::Agent < Puppet::Application
199
203
 
200
204
  * --no-daemonize:
201
205
  Do not send the process into the background.
202
- (This is an OpenVox setting, and can go in puppet.conf. Note the special 'no-'
203
- prefix for boolean settings on the command line.)
206
+ (This is an OpenVox setting, and can go in puppet.conf.)
204
207
 
205
208
  * --debug:
206
209
  Enable full debugging.
@@ -249,6 +252,18 @@ class Puppet::Application::Agent < Puppet::Application
249
252
 
250
253
  'puppet agent' exits after executing this.
251
254
 
255
+ * --environment:
256
+ Request a catalog for the given environment. When set on the command line,
257
+ the agent uses this environment directly and skips both the environment
258
+ recorded by the previous run and the node request to the server, which is
259
+ how it picks an environment otherwise. This is the usual way to move an
260
+ agent out of an environment it switched to on an earlier run. The server
261
+ can still assign a different environment, for example through an ENC. In
262
+ that case the agent switches to the server's environment and requests
263
+ the catalog again. If 'strict_environment_mode' is set, the agent refuses
264
+ the mismatched catalog and fails the run instead of switching.
265
+ (This is an OpenVox setting, and can go in puppet.conf.)
266
+
252
267
  * --evaltrace:
253
268
  Logs each resource as it is being evaluated. This allows you to interactively
254
269
  see exactly what is being done. (This is an OpenVox setting, and can go in
@@ -304,13 +304,14 @@ class Puppet::Application::Ssl < Puppet::Application
304
304
  @cert_provider.delete_request(certname)
305
305
  cert
306
306
  rescue Puppet::HTTP::ResponseError => e
307
- if e.response.code == 404
308
- nil
309
- else
310
- raise Puppet::Error.new(_("Failed to download certificate: %{message}") % { message: e.message }, e)
311
- end
307
+ body = e.response.body.to_s.strip
308
+ raise Puppet::Error.new(_("Failed to renew certificate: %{code} %{reason}%{body}") % {
309
+ code: e.response.code,
310
+ reason: e.response.reason,
311
+ body: body.empty? ? '' : ": #{body}"
312
+ }, e)
312
313
  rescue => e
313
- raise Puppet::Error.new(_("Failed to download certificate: %{message}") % { message: e.message }, e)
314
+ raise Puppet::Error.new(_("Failed to renew certificate: %{message}") % { message: e.message }, e)
314
315
  end
315
316
 
316
317
  def verify(certname)
@@ -381,8 +381,7 @@ class Application
381
381
  # usually not necessary to override this method.
382
382
  # @return [void]
383
383
  # @api public
384
- def preinit
385
- end
384
+ def preinit; end
386
385
 
387
386
  # Call in setup of subclass to deprecate an application.
388
387
  # @return [void]
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../../puppet/agent'
3
4
  require_relative '../../puppet/indirector/facts/facter'
4
5
 
5
6
  require_relative '../../puppet/configurer'
@@ -20,7 +21,10 @@ module Puppet::Configurer::FactHandler
20
21
  facts.name = Puppet[:node_name_value]
21
22
  end
22
23
  facts
23
- rescue SystemExit, NoMemoryError
24
+ rescue SystemExit, NoMemoryError, Puppet::Agent::RunTimeoutError
25
+ # RunTimeoutError means the agent run as a whole has exceeded `runtimeout`.
26
+ # Let it propagate so the run is aborted instead of wrapping it in a
27
+ # Puppet::Error and carrying on with the rest of the run.
24
28
  raise
25
29
  rescue Exception => detail
26
30
  message = _("Could not retrieve local facts: %{detail}") % { detail: detail }
@@ -81,6 +81,5 @@ class Puppet::Confine
81
81
  end
82
82
 
83
83
  # Provide a hook for subclasses.
84
- def reset
85
- end
84
+ def reset; end
86
85
  end