puppet 4.2.3-x64-mingw32 → 4.3.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (337) hide show
  1. data/Gemfile +3 -0
  2. data/README.md +1 -1
  3. data/ext/debian/puppet.init +0 -1
  4. data/ext/debian/puppet.logrotate +14 -5
  5. data/ext/osx/puppet.plist +0 -2
  6. data/ext/redhat/client.init +13 -5
  7. data/ext/redhat/logrotate +15 -3
  8. data/ext/redhat/puppet.spec.erb +5 -1
  9. data/ext/redhat/server.init +1 -1
  10. data/ext/systemd/puppet.service +1 -0
  11. data/lib/puppet.rb +12 -0
  12. data/lib/puppet/agent.rb +4 -4
  13. data/lib/puppet/agent/locker.rb +11 -2
  14. data/lib/puppet/application/agent.rb +5 -1
  15. data/lib/puppet/application/apply.rb +4 -0
  16. data/lib/puppet/application/filebucket.rb +78 -4
  17. data/lib/puppet/application/lookup.rb +356 -0
  18. data/lib/puppet/application/master.rb +3 -0
  19. data/lib/puppet/configurer.rb +9 -5
  20. data/lib/puppet/context.rb +16 -1
  21. data/lib/puppet/context/trusted_information.rb +21 -1
  22. data/lib/puppet/daemon.rb +17 -13
  23. data/lib/puppet/data_binding.rb +4 -2
  24. data/lib/puppet/data_providers.rb +12 -13
  25. data/lib/puppet/data_providers/data_adapter.rb +7 -68
  26. data/lib/puppet/data_providers/data_function_support.rb +5 -26
  27. data/lib/puppet/data_providers/function_env_data_provider.rb +0 -10
  28. data/lib/puppet/data_providers/function_module_data_provider.rb +0 -22
  29. data/lib/puppet/data_providers/hiera_config.rb +106 -0
  30. data/lib/puppet/data_providers/hiera_env_data_provider.rb +18 -0
  31. data/lib/puppet/data_providers/hiera_interpolate.rb +97 -0
  32. data/lib/puppet/data_providers/hiera_module_data_provider.rb +23 -0
  33. data/lib/puppet/data_providers/hiera_support.rb +37 -0
  34. data/lib/puppet/data_providers/json_data_provider_factory.rb +31 -0
  35. data/lib/puppet/data_providers/lookup_adapter.rb +200 -0
  36. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +32 -0
  37. data/lib/puppet/defaults.rb +12 -2
  38. data/lib/puppet/error.rb +4 -0
  39. data/lib/puppet/face/module/changes.rb +2 -1
  40. data/lib/puppet/feature/cfacter.rb +1 -0
  41. data/lib/puppet/file_bucket/dipper.rb +58 -2
  42. data/lib/puppet/functions.rb +2 -4
  43. data/lib/puppet/functions/assert_type.rb +48 -12
  44. data/lib/puppet/functions/defined.rb +79 -48
  45. data/lib/puppet/functions/each.rb +85 -27
  46. data/lib/puppet/functions/filter.rb +58 -23
  47. data/lib/puppet/functions/hiera.rb +76 -3
  48. data/lib/puppet/functions/hiera_array.rb +65 -3
  49. data/lib/puppet/functions/hiera_hash.rb +74 -2
  50. data/lib/puppet/functions/hiera_include.rb +75 -2
  51. data/lib/puppet/functions/lookup.rb +19 -17
  52. data/lib/puppet/functions/map.rb +56 -21
  53. data/lib/puppet/functions/match.rb +29 -12
  54. data/lib/puppet/functions/reduce.rb +95 -58
  55. data/lib/puppet/functions/versioncmp.rb +36 -0
  56. data/lib/puppet/functions/with.rb +15 -7
  57. data/lib/puppet/indirector/catalog/compiler.rb +3 -3
  58. data/lib/puppet/indirector/catalog/static_compiler.rb +46 -30
  59. data/lib/puppet/indirector/data_binding/none.rb +4 -1
  60. data/lib/puppet/indirector/file_bucket_file/file.rb +58 -1
  61. data/lib/puppet/indirector/hiera.rb +4 -0
  62. data/lib/puppet/indirector/json.rb +1 -1
  63. data/lib/puppet/indirector/msgpack.rb +1 -1
  64. data/lib/puppet/indirector/request.rb +7 -8
  65. data/lib/puppet/indirector/resource_type/parser.rb +5 -3
  66. data/lib/puppet/info_service.rb +7 -0
  67. data/lib/puppet/info_service/class_information_service.rb +111 -0
  68. data/lib/puppet/module_tool/metadata.rb +32 -9
  69. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +42 -38
  70. data/lib/puppet/network/authconfig.rb +21 -1
  71. data/lib/puppet/network/authorization.rb +8 -1
  72. data/lib/puppet/network/http/api/master/v3.rb +7 -1
  73. data/lib/puppet/network/http/api/master/v3/environment.rb +59 -0
  74. data/lib/puppet/node/environment.rb +9 -2
  75. data/lib/puppet/parser.rb +3 -0
  76. data/lib/puppet/parser/ast/pops_bridge.rb +39 -1
  77. data/lib/puppet/parser/compiler.rb +302 -12
  78. data/lib/puppet/parser/compiler/catalog_validator.rb +33 -0
  79. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +64 -0
  80. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +38 -0
  81. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +20 -0
  82. data/lib/puppet/parser/environment_compiler.rb +165 -0
  83. data/lib/puppet/parser/functions/assert_type.rb +46 -16
  84. data/lib/puppet/parser/functions/defined.rb +105 -68
  85. data/lib/puppet/parser/functions/each.rb +85 -27
  86. data/lib/puppet/parser/functions/filter.rb +59 -23
  87. data/lib/puppet/parser/functions/hiera.rb +83 -27
  88. data/lib/puppet/parser/functions/hiera_array.rb +71 -28
  89. data/lib/puppet/parser/functions/hiera_hash.rb +81 -30
  90. data/lib/puppet/parser/functions/hiera_include.rb +81 -40
  91. data/lib/puppet/parser/functions/map.rb +55 -20
  92. data/lib/puppet/parser/functions/match.rb +27 -12
  93. data/lib/puppet/parser/functions/reduce.rb +97 -60
  94. data/lib/puppet/parser/functions/with.rb +16 -8
  95. data/lib/puppet/parser/resource.rb +98 -19
  96. data/lib/puppet/plugins/configuration.rb +3 -2
  97. data/lib/puppet/plugins/data_providers.rb +12 -60
  98. data/lib/puppet/plugins/data_providers/data_provider.rb +283 -0
  99. data/lib/puppet/plugins/data_providers/registry.rb +84 -0
  100. data/lib/puppet/pops.rb +19 -17
  101. data/lib/puppet/pops/adapters.rb +12 -0
  102. data/lib/puppet/pops/binder/binder.rb +2 -2
  103. data/lib/puppet/pops/binder/bindings_checker.rb +1 -1
  104. data/lib/puppet/pops/binder/bindings_label_provider.rb +3 -1
  105. data/lib/puppet/pops/binder/bindings_loader.rb +6 -2
  106. data/lib/puppet/pops/binder/bindings_model_meta.rb +2 -2
  107. data/lib/puppet/pops/binder/config/binder_config.rb +1 -1
  108. data/lib/puppet/pops/binder/injector.rb +4 -4
  109. data/lib/puppet/pops/binder/key_factory.rb +3 -9
  110. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +68 -9
  111. data/lib/puppet/pops/evaluator/access_operator.rb +27 -60
  112. data/lib/puppet/pops/evaluator/closure.rb +8 -8
  113. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  114. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  115. data/lib/puppet/pops/evaluator/literal_evaluator.rb +87 -0
  116. data/lib/puppet/pops/evaluator/relationship_operator.rb +7 -1
  117. data/lib/puppet/pops/functions/dispatcher.rb +3 -3
  118. data/lib/puppet/pops/issues.rb +1 -1
  119. data/lib/puppet/pops/label_provider.rb +1 -1
  120. data/lib/puppet/pops/lookup.rb +25 -47
  121. data/lib/puppet/pops/lookup/explainer.rb +402 -0
  122. data/lib/puppet/pops/lookup/invocation.rb +117 -0
  123. data/lib/puppet/pops/merge_strategy.rb +73 -5
  124. data/lib/puppet/pops/model/factory.rb +34 -0
  125. data/lib/puppet/pops/model/model_label_provider.rb +10 -1
  126. data/lib/puppet/pops/model/model_meta.rb +15 -0
  127. data/lib/puppet/pops/model/model_tree_dumper.rb +18 -0
  128. data/lib/puppet/pops/parser/code_merger.rb +13 -1
  129. data/lib/puppet/pops/parser/egrammar.ra +56 -3
  130. data/lib/puppet/pops/parser/eparser.rb +1549 -1352
  131. data/lib/puppet/pops/parser/lexer2.rb +31 -6
  132. data/lib/puppet/pops/parser/locator.rb +1 -1
  133. data/lib/puppet/pops/parser/parser_support.rb +25 -13
  134. data/lib/puppet/pops/types/enumeration.rb +1 -2
  135. data/lib/puppet/pops/types/type_asserter.rb +16 -15
  136. data/lib/puppet/pops/types/type_assertion_error.rb +1 -0
  137. data/lib/puppet/pops/types/type_calculator.rb +171 -1020
  138. data/lib/puppet/pops/types/type_factory.rb +87 -148
  139. data/lib/puppet/pops/types/type_mismatch_describer.rb +743 -0
  140. data/lib/puppet/pops/types/type_parser.rb +116 -127
  141. data/lib/puppet/pops/types/types.rb +1394 -255
  142. data/lib/puppet/pops/types/types_meta.rb +0 -234
  143. data/lib/puppet/pops/validation.rb +7 -2
  144. data/lib/puppet/pops/validation/checker4_0.rb +28 -0
  145. data/lib/puppet/provider/augeas/augeas.rb +50 -0
  146. data/lib/puppet/provider/group/directoryservice.rb +10 -0
  147. data/lib/puppet/provider/package/dnf.rb +41 -0
  148. data/lib/puppet/provider/package/gem.rb +7 -2
  149. data/lib/puppet/provider/package/rpm.rb +1 -0
  150. data/lib/puppet/provider/package/windows/exe_package.rb +10 -8
  151. data/lib/puppet/provider/package/windows/msi_package.rb +4 -3
  152. data/lib/puppet/provider/package/windows/package.rb +9 -1
  153. data/lib/puppet/provider/package/yum.rb +14 -9
  154. data/lib/puppet/provider/service/bsd.rb +1 -1
  155. data/lib/puppet/provider/service/debian.rb +21 -0
  156. data/lib/puppet/provider/service/init.rb +6 -0
  157. data/lib/puppet/provider/service/rcng.rb +51 -0
  158. data/lib/puppet/provider/service/redhat.rb +2 -1
  159. data/lib/puppet/provider/service/smf.rb +43 -2
  160. data/lib/puppet/provider/service/src.rb +27 -0
  161. data/lib/puppet/provider/service/systemd.rb +15 -3
  162. data/lib/puppet/provider/sshkey/parsed.rb +19 -9
  163. data/lib/puppet/reference/report.rb +9 -12
  164. data/lib/puppet/reports.rb +5 -1
  165. data/lib/puppet/resource.rb +50 -73
  166. data/lib/puppet/resource/capability_finder.rb +95 -0
  167. data/lib/puppet/resource/catalog.rb +47 -7
  168. data/lib/puppet/resource/status.rb +0 -2
  169. data/lib/puppet/resource/type.rb +238 -44
  170. data/lib/puppet/resource/type_collection.rb +60 -2
  171. data/lib/puppet/settings.rb +2 -2
  172. data/lib/puppet/ssl/certificate_authority/interface.rb +2 -2
  173. data/lib/puppet/ssl/oids.rb +9 -1
  174. data/lib/puppet/transaction.rb +4 -1
  175. data/lib/puppet/transaction/additional_resource_generator.rb +71 -8
  176. data/lib/puppet/transaction/resource_harness.rb +9 -4
  177. data/lib/puppet/type.rb +74 -3
  178. data/lib/puppet/type/augeas.rb +8 -0
  179. data/lib/puppet/type/file/source.rb +14 -12
  180. data/lib/puppet/type/user.rb +4 -2
  181. data/lib/puppet/util/windows/security.rb +4 -1
  182. data/lib/puppet/util/windows/taskscheduler.rb +1 -1
  183. data/lib/puppet/version.rb +1 -1
  184. data/spec/fixtures/unit/application/environments/production/data/common.yaml +3 -0
  185. data/spec/fixtures/unit/application/environments/production/environment.conf +1 -0
  186. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +3 -0
  187. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +2 -0
  188. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +5 -0
  189. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +5 -0
  190. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +3 -0
  191. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +2 -0
  192. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +5 -0
  193. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +5 -0
  194. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +2 -0
  195. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +2 -0
  196. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +1 -0
  197. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +2 -0
  198. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +5 -0
  199. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +9 -0
  200. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +3 -0
  201. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +2 -0
  202. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +3 -0
  203. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +2 -0
  204. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +2 -0
  205. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +2 -0
  206. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +18 -0
  207. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +5 -0
  208. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +46 -0
  209. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +2 -0
  210. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +1 -0
  211. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +30 -0
  212. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +13 -0
  213. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +9 -0
  214. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +2 -0
  215. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +1 -0
  216. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +3 -0
  217. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +1 -0
  218. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +3 -0
  219. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +2 -0
  220. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +2 -0
  221. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +18 -0
  222. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +5 -0
  223. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +9 -0
  224. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +1 -0
  225. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +1 -0
  226. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/data/first.json +3 -0
  227. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/hiera.yaml +8 -0
  228. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/manifests/init.pp +5 -0
  229. data/spec/fixtures/unit/functions/lookup/environments/production/modules/hieraprovider/metadata.json +9 -0
  230. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +9 -0
  231. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/manifests/init.pp +3 -0
  232. data/spec/fixtures/unit/functions/lookup/environments/production/modules/meta/metadata.json +9 -0
  233. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +10 -0
  234. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +23 -0
  235. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/manifests/init.pp +3 -0
  236. data/spec/fixtures/unit/functions/lookup/environments/production/modules/metawcp/metadata.json +9 -0
  237. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +184 -0
  238. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +24 -0
  239. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +24 -0
  240. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +24 -0
  241. data/spec/integration/data_binding_spec.rb +229 -0
  242. data/spec/integration/file_bucket/file_spec.rb +2 -2
  243. data/spec/integration/parser/compiler_spec.rb +23 -19
  244. data/spec/integration/parser/resource_expressions_spec.rb +4 -4
  245. data/spec/integration/parser/undef_param_spec.rb +1 -1
  246. data/spec/integration/resource/catalog_spec.rb +1 -1
  247. data/spec/integration/type/package_spec.rb +2 -0
  248. data/spec/integration/util/windows/security_spec.rb +18 -0
  249. data/spec/lib/matchers/include_in_order.rb +2 -2
  250. data/spec/shared_behaviours/iterative_functions.rb +8 -8
  251. data/spec/spec_helper.rb +7 -0
  252. data/spec/unit/agent/locker_spec.rb +4 -4
  253. data/spec/unit/agent_spec.rb +0 -8
  254. data/spec/unit/application/agent_spec.rb +5 -0
  255. data/spec/unit/application/apply_spec.rb +8 -0
  256. data/spec/unit/application/filebucket_spec.rb +87 -1
  257. data/spec/unit/application/lookup_spec.rb +195 -0
  258. data/spec/unit/appmgmt_spec.rb +657 -0
  259. data/spec/unit/capability_spec.rb +414 -0
  260. data/spec/unit/configurer_spec.rb +7 -1
  261. data/spec/unit/context/trusted_information_spec.rb +24 -1
  262. data/spec/unit/daemon_spec.rb +18 -8
  263. data/spec/unit/data_providers/hiera_data_provider_spec.rb +201 -0
  264. data/spec/unit/file_bucket/dipper_spec.rb +210 -1
  265. data/spec/unit/functions/assert_type_spec.rb +5 -7
  266. data/spec/unit/functions/defined_spec.rb +2 -2
  267. data/spec/unit/functions/epp_spec.rb +2 -2
  268. data/spec/unit/functions/lookup_spec.rb +200 -9
  269. data/spec/unit/functions/regsubst_spec.rb +17 -8
  270. data/spec/unit/functions/scanf_spec.rb +1 -1
  271. data/spec/unit/functions/split_spec.rb +2 -2
  272. data/spec/unit/functions/versioncmp_spec.rb +36 -0
  273. data/spec/unit/functions4_spec.rb +58 -72
  274. data/spec/unit/indirector/catalog/compiler_spec.rb +28 -8
  275. data/spec/unit/indirector/catalog/static_compiler_spec.rb +38 -20
  276. data/spec/unit/indirector/data_binding/none_spec.rb +2 -2
  277. data/spec/unit/indirector/file_bucket_file/file_spec.rb +52 -1
  278. data/spec/unit/indirector/request_spec.rb +8 -8
  279. data/spec/unit/info_service_spec.rb +236 -0
  280. data/spec/unit/module_tool/metadata_spec.rb +31 -2
  281. data/spec/unit/network/authconfig_spec.rb +62 -32
  282. data/spec/unit/network/authorization_spec.rb +30 -2
  283. data/spec/unit/network/http/connection_spec.rb +14 -19
  284. data/spec/unit/parser/compiler_spec.rb +86 -2
  285. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  286. data/spec/unit/parser/resource_spec.rb +2 -20
  287. data/spec/unit/pops/binder/config/binder_config_spec.rb +1 -1
  288. data/spec/unit/pops/binder/injector_spec.rb +3 -3
  289. data/spec/unit/pops/evaluator/access_ops_spec.rb +13 -11
  290. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -2
  291. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -11
  292. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +43 -0
  293. data/spec/unit/pops/label_provider_spec.rb +5 -1
  294. data/spec/unit/pops/parser/lexer2_spec.rb +33 -7
  295. data/spec/unit/pops/parser/parse_application_spec.rb +40 -0
  296. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -0
  297. data/spec/unit/pops/parser/parse_capabilities_spec.rb +47 -0
  298. data/spec/unit/pops/parser/parse_site_spec.rb +38 -0
  299. data/spec/unit/pops/parser/parser_rspec_helper.rb +5 -0
  300. data/spec/unit/pops/parser/parser_spec.rb +18 -0
  301. data/spec/unit/pops/types/type_calculator_spec.rb +427 -444
  302. data/spec/unit/pops/types/type_factory_spec.rb +12 -12
  303. data/spec/unit/pops/types/type_parser_spec.rb +7 -12
  304. data/spec/unit/pops/validator/validator_spec.rb +25 -0
  305. data/spec/unit/provider/augeas/augeas_spec.rb +50 -0
  306. data/spec/unit/provider/group/directoryservice_spec.rb +33 -0
  307. data/spec/unit/provider/group/windows_adsi_spec.rb +3 -0
  308. data/spec/unit/provider/package/dnf_spec.rb +92 -0
  309. data/spec/unit/provider/package/gem_spec.rb +7 -0
  310. data/spec/unit/provider/package/rpm_spec.rb +25 -2
  311. data/spec/unit/provider/package/windows/package_spec.rb +41 -0
  312. data/spec/unit/provider/package/yum_spec.rb +21 -13
  313. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +10 -0
  314. data/spec/unit/provider/service/debian_spec.rb +27 -0
  315. data/spec/unit/provider/service/rcng_spec.rb +41 -0
  316. data/spec/unit/provider/service/redhat_spec.rb +8 -1
  317. data/spec/unit/provider/service/smf_spec.rb +30 -5
  318. data/spec/unit/provider/service/src_spec.rb +19 -4
  319. data/spec/unit/provider/service/systemd_spec.rb +78 -29
  320. data/spec/unit/provider/sshkey/parsed_spec.rb +23 -0
  321. data/spec/unit/reports_spec.rb +10 -0
  322. data/spec/unit/resource/capability_finder_spec.rb +56 -0
  323. data/spec/unit/resource/catalog_spec.rb +31 -8
  324. data/spec/unit/resource/type_collection_spec.rb +23 -2
  325. data/spec/unit/resource/type_spec.rb +1 -1
  326. data/spec/unit/resource_spec.rb +22 -4
  327. data/spec/unit/settings_spec.rb +90 -1
  328. data/spec/unit/ssl/certificate_authority/interface_spec.rb +4 -3
  329. data/spec/unit/ssl/oids_spec.rb +8 -0
  330. data/spec/unit/transaction/additional_resource_generator_spec.rb +78 -5
  331. data/spec/unit/transaction/report_spec.rb +24 -1
  332. data/spec/unit/type/package_spec.rb +1 -0
  333. data/spec/unit/type/user_spec.rb +14 -7
  334. data/spec/unit/type_spec.rb +1 -1
  335. metadata +169 -5
  336. data/lib/puppet/pops/evaluator/callable_mismatch_describer.rb +0 -175
  337. data/spec/integration/data_binding.rb +0 -104
data/Gemfile CHANGED
@@ -49,6 +49,9 @@ group(:development, :test) do
49
49
  gem "rubocop", "~> 0.26.1", :platforms => [:ruby]
50
50
 
51
51
  gem 'rdoc', "~> 4.1", :platforms => [:ruby]
52
+
53
+ gem 'webmock'
54
+ gem 'vcr', '~> 2.9'
52
55
  end
53
56
 
54
57
  group(:development) do
data/README.md CHANGED
@@ -51,7 +51,7 @@ See [LICENSE](LICENSE) file.
51
51
  Support
52
52
  -------
53
53
 
54
- Please log tickets and issues at our [JIRA tracker](http://tickets.puppetlabs.com). A [mailing
54
+ Please log tickets and issues at our [JIRA tracker](https://tickets.puppetlabs.com). A [mailing
55
55
  list](https://groups.google.com/forum/?fromgroups#!forum/puppet-users) is
56
56
  available for asking questions and getting help from others. In addition there
57
57
  is an active #puppet channel on Freenode.
@@ -8,7 +8,6 @@
8
8
  # Default-Stop: 0 1 6
9
9
  ### END INIT INFO
10
10
 
11
- PATH=/opt/puppetlabs/puppet/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
12
11
  DAEMON=/opt/puppetlabs/puppet/bin/puppet
13
12
  DAEMON_OPTS=""
14
13
  NAME="agent"
@@ -1,11 +1,20 @@
1
- /var/log/puppetlabs/puppet.log {
2
- missingok
3
- sharedscripts
4
- create 0644 puppet puppet
1
+ /var/log/puppetlabs/masterhttp.log /var/log/puppet/masterhttp.log {
5
2
  compress
6
3
  rotate 4
4
+ missingok
5
+ notifempty
6
+ nocreate
7
+ }
7
8
 
9
+ /var/log/puppetlabs/puppetd.log /var/log/puppet/puppetd.log {
10
+ compress
11
+ rotate 4
12
+ missingok
13
+ notifempty
14
+ nocreate
15
+ sharedscripts
8
16
  postrotate
9
- [ -e /etc/init.d/puppet ] && /etc/init.d/puppet reload > /dev/null 2>&1 || true
17
+ ([ -x /etc/init.d/puppet ] && /etc/init.d/puppet reload > /dev/null 2>&1) ||
18
+ ([ -x /usr/bin/systemctl ] && /usr/bin/systemctl kill -s USR2 puppet.service > /dev/null 2>&1) || true
10
19
  endscript
11
20
  }
data/ext/osx/puppet.plist CHANGED
@@ -4,8 +4,6 @@
4
4
  <dict>
5
5
  <key>EnvironmentVariables</key>
6
6
  <dict>
7
- <key>PATH</key>
8
- <string>/opt/puppetlabs/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
9
7
  <key>LANG</key>
10
8
  <string>en_US.UTF-8</string>
11
9
  </dict>
@@ -13,9 +13,6 @@
13
13
  # Source function library.
14
14
  . /etc/rc.d/init.d/functions
15
15
 
16
- PATH=/opt/puppetlabs/puppet/bin:/usr/bin:/sbin:/bin:/usr/sbin
17
- export PATH
18
-
19
16
  [ -f /etc/sysconfig/puppet ] && . /etc/sysconfig/puppet
20
17
  lockfile=/var/lock/subsys/puppet
21
18
  piddir=/var/run/puppetlabs
@@ -66,7 +63,7 @@ stop() {
66
63
  }
67
64
 
68
65
  reload() {
69
- echo -n $"Restarting puppet agent: "
66
+ echo -n $"Reloading puppet agent: "
70
67
  if [ "$USEINITFUNCTIONS" = "true" ]; then
71
68
  killproc $pidopts $puppetd -HUP
72
69
  RETVAL=$?
@@ -82,6 +79,14 @@ reload() {
82
79
  return $RETVAL
83
80
  }
84
81
 
82
+ rotate() {
83
+ echo -n $"Reopening log files for puppet agent: "
84
+ killproc $pidopts $puppetd -USR2
85
+ RETVAL=$?
86
+ echo
87
+ return $RETVAL
88
+ }
89
+
85
90
  restart() {
86
91
  stop
87
92
  start
@@ -136,6 +141,9 @@ case "$1" in
136
141
  restart)
137
142
  restart
138
143
  ;;
144
+ rotate)
145
+ rotate
146
+ ;;
139
147
  reload|force-reload)
140
148
  reload
141
149
  ;;
@@ -154,7 +162,7 @@ case "$1" in
154
162
  genconfig
155
163
  ;;
156
164
  *)
157
- echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|once|genconfig}"
165
+ echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|rotate|once|genconfig}"
158
166
  exit 1
159
167
  esac
160
168
 
data/ext/redhat/logrotate CHANGED
@@ -1,9 +1,21 @@
1
- /var/log/puppetlabs/puppet.log {
1
+ # Generic logrotate config for Red Hat systems. Works with both official
2
+ # Fedora and RHEL packages as well as PuppetLabs distributions.
3
+
4
+ /var/log/puppetlabs/masterhttp.log /var/log/puppet/masterhttp.log {
5
+ compress
2
6
  missingok
3
7
  notifempty
4
- create 0644 puppet puppet
8
+ nocreate
9
+ }
10
+
11
+ /var/log/puppetlabs/puppetd.log /var/log/puppet/puppetd.log {
12
+ compress
13
+ missingok
14
+ notifempty
15
+ nocreate
5
16
  sharedscripts
6
17
  postrotate
7
- [ -e /etc/init.d/puppet ] && /etc/init.d/puppet reload > /dev/null 2>&1 || true
18
+ ([ -x /etc/init.d/puppet ] && /etc/init.d/puppet reload > /dev/null 2>&1) ||
19
+ ([ -x /usr/bin/systemctl ] && /usr/bin/systemctl kill -s USR2 puppet.service > /dev/null 2>&1) || true
8
20
  endscript
9
21
  }
@@ -181,13 +181,16 @@ echo "D /var/run/%{name} 0755 %{name} %{name} -" > \
181
181
  # Create puppet modules directory for puppet module tool
182
182
  mkdir -p %{buildroot}%{_sysconfdir}/%{name}/modules
183
183
 
184
-
185
184
  # Install a NetworkManager dispatcher script to pickup changes to
186
185
  # # /etc/resolv.conf and such (https://bugzilla.redhat.com/532085).
187
186
  mkdir -p %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d
188
187
  cp -pr ext/puppet-nm-dispatcher \
189
188
  %{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d/98-%{name}
190
189
 
190
+ # Masterhttp.log is created on server start and should be distributed
191
+ # with correct permissions
192
+ touch %{buildroot}%{_localstatedir}/log/puppet/masterhttp.log
193
+
191
194
  %files
192
195
  %defattr(-, root, root, 0755)
193
196
  %doc LICENSE README.md examples
@@ -280,6 +283,7 @@ cp -pr ext/puppet-nm-dispatcher \
280
283
  %{_sysconfdir}/puppet/environments/example_env/README.environment
281
284
  %{_mandir}/man8/puppet-ca.8.gz
282
285
  %{_mandir}/man8/puppet-master.8.gz
286
+ %attr(660, puppet, puppet) %{_localstatedir}/log/puppet/masterhttp.log
283
287
 
284
288
  # Fixed uid/gid were assigned in bz 472073 (Fedora), 471918 (RHEL-5),
285
289
  # and 471919 (RHEL-4)
@@ -89,7 +89,7 @@ genconfig() {
89
89
  }
90
90
 
91
91
  rh_status() {
92
- status $pidopts $PUPPETMASTER
92
+ status $pidopts -l $lockfile $PUPPETMASTER
93
93
  RETVAL=$?
94
94
  return $RETVAL
95
95
  }
@@ -8,6 +8,7 @@ EnvironmentFile=-/etc/sysconfig/puppetagent
8
8
  EnvironmentFile=-/etc/sysconfig/puppet
9
9
  EnvironmentFile=-/etc/default/puppet
10
10
  ExecStart=/opt/puppetlabs/puppet/bin/puppet agent $PUPPET_EXTRA_OPTS --no-daemonize
11
+ ExecReload=/bin/kill -HUP $MAINPID
11
12
  KillMode=process
12
13
 
13
14
  [Install]
data/lib/puppet.rb CHANGED
@@ -223,6 +223,18 @@ module Puppet
223
223
  @context.override(bindings, description, &block)
224
224
  end
225
225
 
226
+ # @param name The name of a context key to ignore; intended for test usage.
227
+ # @api private
228
+ def self.ignore(name)
229
+ @context.ignore(name)
230
+ end
231
+
232
+ # @param name The name of a previously ignored context key to restore; intended for test usage.
233
+ # @api private
234
+ def self.restore(name)
235
+ @context.restore(name)
236
+ end
237
+
226
238
  # @api private
227
239
  def self.mark_context(name)
228
240
  @context.mark(name)
data/lib/puppet/agent.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'puppet/application'
2
+ require 'puppet/error'
2
3
 
3
4
  # A general class for triggering a run of another
4
5
  # class.
@@ -29,10 +30,6 @@ class Puppet::Agent
29
30
 
30
31
  # Perform a run with our client.
31
32
  def run(client_options = {})
32
- if running?
33
- Puppet.notice "Run of #{client_class} already in progress; skipping (#{lockfile_path} exists)"
34
- return
35
- end
36
33
  if disabled?
37
34
  Puppet.notice "Skipping run of #{client_class}; administratively disabled (Reason: '#{disable_message}');\nUse 'puppet agent --enable' to re-enable."
38
35
  return
@@ -46,6 +43,9 @@ class Puppet::Agent
46
43
  begin
47
44
  client_args = client_options.merge(:pluginsync => Puppet[:pluginsync])
48
45
  lock { client.run(client_args) }
46
+ rescue Puppet::LockError
47
+ Puppet.notice "Run of #{client_class} already in progress; skipping (#{lockfile_path} exists)"
48
+ return
49
49
  rescue StandardError => detail
50
50
  Puppet.log_exception(detail, "Could not run #{client_class}: #{detail}")
51
51
  end
@@ -1,4 +1,5 @@
1
1
  require 'puppet/util/pidlock'
2
+ require 'puppet/error'
2
3
 
3
4
  # This module is responsible for encapsulating the logic for "locking" the
4
5
  # puppet agent during a catalog run; in other words, keeping track of enough
@@ -12,8 +13,8 @@ require 'puppet/util/pidlock'
12
13
  # For more information, please see docs on the website.
13
14
  # http://links.puppetlabs.com/agent_lockfiles
14
15
  module Puppet::Agent::Locker
15
- # Yield if we get a lock, else do nothing. Return
16
- # true/false depending on whether we get the lock.
16
+ # Yield if we get a lock, else raise Puppet::LockError. Return
17
+ # value of block yielded.
17
18
  def lock
18
19
  if lockfile.lock
19
20
  begin
@@ -21,10 +22,18 @@ module Puppet::Agent::Locker
21
22
  ensure
22
23
  lockfile.unlock
23
24
  end
25
+ else
26
+ fail Puppet::LockError, 'Failed to aquire lock'
24
27
  end
25
28
  end
26
29
 
30
+ # @deprecated
27
31
  def running?
32
+ Puppet.deprecation_warning <<-ENDHEREDOC
33
+ Puppet::Agent::Locker.running? is deprecated as it is inherently unsafe.
34
+ The only safe way to know if the lock is locked is to try lock and perform some
35
+ action and then handle the LockError that may result.
36
+ ENDHEREDOC
28
37
  lockfile.locked?
29
38
  end
30
39
 
@@ -322,6 +322,9 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
322
322
  # waiting for certificates so that we don't block
323
323
  daemon = daemonize_process_when(Puppet[:daemonize])
324
324
 
325
+ # Setup signal traps immediately after daemonization so we clean up the daemon
326
+ daemon.set_signal_traps
327
+
325
328
  wait_for_certificates
326
329
 
327
330
  if Puppet[:onetime]
@@ -346,7 +349,6 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
346
349
  end
347
350
 
348
351
  def onetime(daemon)
349
- daemon.set_signal_traps
350
352
  begin
351
353
  exitstatus = daemon.agent.run
352
354
  rescue => detail
@@ -382,6 +384,8 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
382
384
  end
383
385
 
384
386
  def setup
387
+ raise ArgumentError, "The puppet agent command does not take parameters" unless command_line.args.empty?
388
+
385
389
  setup_test if options[:test]
386
390
 
387
391
  setup_logs
@@ -315,6 +315,10 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
315
315
 
316
316
  Puppet.settings.use :main, :agent, :ssl
317
317
 
318
+ if Puppet[:catalog_cache_terminus]
319
+ Puppet::Resource::Catalog.indirection.cache_class = Puppet[:catalog_cache_terminus]
320
+ end
321
+
318
322
  # we want the last report to be persisted locally
319
323
  Puppet::Transaction::Report.indirection.cache_class = :yaml
320
324
 
@@ -4,6 +4,8 @@ class Puppet::Application::Filebucket < Puppet::Application
4
4
 
5
5
  option("--bucket BUCKET","-b")
6
6
  option("--debug","-d")
7
+ option("--fromdate FROMDATE","-f")
8
+ option("--todate TODATE","-t")
7
9
  option("--local","-l")
8
10
  option("--remote","-r")
9
11
  option("--verbose","-v")
@@ -25,7 +27,8 @@ USAGE
25
27
  -----
26
28
  puppet filebucket <mode> [-h|--help] [-V|--version] [-d|--debug]
27
29
  [-v|--verbose] [-l|--local] [-r|--remote] [-s|--server <server>]
28
- [-b|--bucket <directory>] <file> <file> ...
30
+ [-f|--fromdate <date>] [-t|--todate <date>] [-b|--bucket <directory>]
31
+ <file> <file> ...
29
32
 
30
33
  Puppet filebucket can operate in three modes, with only one mode per call:
31
34
 
@@ -43,6 +46,13 @@ restore:
43
46
  path to this argument; you are not restricted to restoring the content
44
47
  to its original location.
45
48
 
49
+ diff:
50
+ Print a diff in unified format between two checksums in the filebucket
51
+ or between a checksum and its matching file.
52
+
53
+ list:
54
+ List all files in the current local filebucket. Listing remote
55
+ filebuckets is not allowed.
46
56
 
47
57
  DESCRIPTION
48
58
  -----------
@@ -71,6 +81,9 @@ configuration options can also be generated by running puppet with
71
81
  * --debug:
72
82
  Enable full debugging.
73
83
 
84
+ * --fromdate:
85
+ (list only) Select bucket files from 'fromdate'
86
+
74
87
  * --help:
75
88
  Print this help message
76
89
 
@@ -85,6 +98,9 @@ configuration options can also be generated by running puppet with
85
98
  * --server:
86
99
  The server to send the file to, instead of locally.
87
100
 
101
+ * --todate:
102
+ (list only) Select bucket files until 'todate'
103
+
88
104
  * --verbose:
89
105
  Print extra information.
90
106
 
@@ -97,7 +113,31 @@ EXAMPLE
97
113
  $ puppet filebucket backup /etc/passwd
98
114
  /etc/passwd: 429b225650b912a2ee067b0a4cf1e949
99
115
  $ puppet filebucket restore /tmp/passwd 429b225650b912a2ee067b0a4cf1e949
100
-
116
+ ## Diff between two files in the filebucket
117
+ $ puppet filebucket -l diff d43a6ecaa892a1962398ac9170ea9bf2 7ae322f5791217e031dc60188f4521ef
118
+ 1a2
119
+ > again
120
+ ## Diff between the file in the filebucket and the current one
121
+ $ puppet filebucket -l diff d43a6ecaa892a1962398ac9170ea9bf2 /tmp/testFile
122
+ 1a2
123
+ > again
124
+ $ puppet filebucket -l list
125
+ d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile
126
+ $ echo again >> /tmp/TestFile
127
+ $ puppet filebucket -l backup /tmp/TestFile
128
+ /tmp/TestFile: 7ae322f5791217e031dc60188f4521ef
129
+ $ puppet filebucket -l list
130
+ d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile
131
+ 7ae322f5791217e031dc60188f4521ef 2015-05-11 09:52:15 /tmp/TestFile
132
+ $ puppet filebucket -l -f 2015-01-01 -t 2015-01-11 list
133
+ <Empty Output>
134
+ $ puppet filebucket -l -f 2015-05-10 list
135
+ d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile
136
+ 7ae322f5791217e031dc60188f4521ef 2015-05-11 09:52:15 /tmp/TestFile
137
+ $ puppet filebucket -l -f "2015-05-11 09:30:00" list
138
+ 7ae322f5791217e031dc60188f4521ef 2015-05-11 09:52:15 /tmp/TestFile
139
+ $ puppet filebucket -l -t "2015-05-11 09:30:00" list
140
+ d43a6ecaa892a1962398ac9170ea9bf2 2015-05-11 09:27:56 /tmp/TestFile
101
141
 
102
142
  AUTHOR
103
143
  ------
@@ -115,7 +155,7 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
115
155
  def run_command
116
156
  @args = command_line.args
117
157
  command = args.shift
118
- return send(command) if %w{get backup restore}.include? command
158
+ return send(command) if %w{get backup restore diff list}.include? command
119
159
  help
120
160
  end
121
161
 
@@ -142,12 +182,47 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
142
182
  end
143
183
  end
144
184
 
185
+ def list
186
+ fromdate = options[:fromdate]
187
+ todate = options[:todate]
188
+ out = @client.list(fromdate, todate)
189
+ print out
190
+ end
191
+
145
192
  def restore
146
193
  file = args.shift
147
194
  md5 = args.shift
148
195
  @client.restore(file, md5)
149
196
  end
150
197
 
198
+ def diff
199
+ raise Puppet::Error, "Need exactly two arguments: filebucket diff <file_a> <file_b>" unless args.count == 2
200
+ left = args.shift
201
+ right = args.shift
202
+ if Puppet::FileSystem.exist?(left)
203
+ # It's a file
204
+ file_a = left
205
+ checksum_a = nil
206
+ else
207
+ file_a = nil
208
+ checksum_a = left
209
+ end
210
+ if Puppet::FileSystem.exist?(right)
211
+ # It's a file
212
+ file_b = right
213
+ checksum_b = nil
214
+ else
215
+ file_b = nil
216
+ checksum_b = right
217
+ end
218
+ if (checksum_a || file_a) && (checksum_b || file_b)
219
+ Puppet.info("Comparing #{checksum_a} #{checksum_b} #{file_a} #{file_b}")
220
+ print @client.diff(checksum_a, checksum_b, file_a, file_b)
221
+ else
222
+ raise Puppet::Error, "Need exactly two arguments: filebucket diff <file_a> <file_b>"
223
+ end
224
+ end
225
+
151
226
  def setup
152
227
  Puppet::Log.newdestination(:console)
153
228
 
@@ -181,4 +256,3 @@ Copyright (c) 2011 Puppet Labs, LLC Licensed under the Apache 2.0 License
181
256
  end
182
257
  end
183
258
  end
184
-