puppet 4.4.0 → 4.5.0

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 (745) hide show
  1. data/CONTRIBUTING.md +5 -5
  2. data/Gemfile +2 -2
  3. data/LICENSE +2 -2
  4. data/README.md +5 -0
  5. data/conf/puppet.conf +1 -1
  6. data/ext/project_data.yaml +2 -0
  7. data/ext/redhat/puppet.spec.erb +0 -9
  8. data/ext/upload_facts.rb +1 -1
  9. data/lib/hiera_puppet.rb +6 -14
  10. data/lib/puppet/application/agent.rb +3 -4
  11. data/lib/puppet/application/apply.rb +1 -1
  12. data/lib/puppet/application/ca.rb +1 -0
  13. data/lib/puppet/application/cert.rb +1 -1
  14. data/lib/puppet/application/filebucket.rb +1 -1
  15. data/lib/puppet/application/inspect.rb +2 -2
  16. data/lib/puppet/application/lookup.rb +8 -20
  17. data/lib/puppet/application/master.rb +1 -1
  18. data/lib/puppet/application/resource.rb +1 -5
  19. data/lib/puppet/data_providers/hiera_config.rb +2 -4
  20. data/lib/puppet/data_providers/hiera_interpolate.rb +12 -105
  21. data/lib/puppet/data_providers/json_data_provider_factory.rb +1 -8
  22. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +2 -8
  23. data/lib/puppet/defaults.rb +104 -25
  24. data/lib/puppet/face/config.rb +1 -1
  25. data/lib/puppet/face/help/man.erb +1 -1
  26. data/lib/puppet/file_system/uniquefile.rb +2 -2
  27. data/lib/puppet/file_system/windows.rb +1 -15
  28. data/lib/puppet/functions/assert_type.rb +1 -1
  29. data/lib/puppet/functions/dig.rb +39 -0
  30. data/lib/puppet/functions/hiera_include.rb +2 -2
  31. data/lib/puppet/functions/inline_epp.rb +1 -1
  32. data/lib/puppet/functions/lest.rb +53 -0
  33. data/lib/puppet/functions/lookup.rb +40 -30
  34. data/lib/puppet/functions/new.rb +502 -0
  35. data/lib/puppet/functions/regsubst.rb +11 -10
  36. data/lib/puppet/functions/then.rb +74 -0
  37. data/lib/puppet/functions/type.rb +4 -4
  38. data/lib/puppet/functions/with.rb +1 -1
  39. data/lib/puppet/functions.rb +69 -0
  40. data/lib/puppet/indirector/catalog/compiler.rb +4 -1
  41. data/lib/puppet/indirector/msgpack.rb +1 -1
  42. data/lib/puppet/indirector/resource_type/parser.rb +5 -0
  43. data/lib/puppet/indirector/rest.rb +5 -1
  44. data/lib/puppet/indirector/terminus.rb +4 -4
  45. data/lib/puppet/loaders.rb +2 -0
  46. data/lib/puppet/metatype/manager.rb +19 -2
  47. data/lib/puppet/module.rb +3 -3
  48. data/lib/puppet/module_tool/applications/application.rb +1 -1
  49. data/lib/puppet/module_tool/applications/builder.rb +2 -2
  50. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +6 -2
  51. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +19 -4
  52. data/lib/puppet/module_tool/skeleton/templates/generator/{tests → examples}/init.pp.erb +1 -1
  53. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +0 -1
  54. data/lib/puppet/network/auth_config_parser.rb +1 -1
  55. data/lib/puppet/network/http/api/indirected_routes.rb +0 -2
  56. data/lib/puppet/network/http/api/master/v3/environment.rb +6 -2
  57. data/lib/puppet/network/http/rack/rest.rb +10 -1
  58. data/lib/puppet/parser/ast/pops_bridge.rb +20 -3
  59. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +24 -2
  60. data/lib/puppet/parser/e4_parser_adapter.rb +13 -12
  61. data/lib/puppet/parser/environment_compiler.rb +2 -2
  62. data/lib/puppet/parser/functions/hiera_include.rb +2 -2
  63. data/lib/puppet/parser/functions/inline_epp.rb +1 -1
  64. data/lib/puppet/parser/functions/lookup.rb +0 -3
  65. data/lib/puppet/parser/resource.rb +14 -5
  66. data/lib/puppet/parser/scope.rb +18 -15
  67. data/lib/puppet/plugins/data_providers/data_provider.rb +19 -8
  68. data/lib/puppet/pops/adapters.rb +5 -1
  69. data/lib/puppet/pops/evaluator/access_operator.rb +77 -15
  70. data/lib/puppet/pops/evaluator/closure.rb +10 -5
  71. data/lib/puppet/pops/evaluator/compare_operator.rb +34 -4
  72. data/lib/puppet/pops/evaluator/evaluator_impl.rb +75 -22
  73. data/lib/puppet/pops/evaluator/literal_evaluator.rb +7 -6
  74. data/lib/puppet/pops/evaluator/runtime3_converter.rb +13 -1
  75. data/lib/puppet/pops/evaluator/runtime3_support.rb +14 -4
  76. data/lib/puppet/pops/functions/dispatcher.rb +1 -1
  77. data/lib/puppet/pops/issues.rb +18 -2
  78. data/lib/puppet/pops/loader/base_loader.rb +48 -7
  79. data/lib/puppet/pops/loader/dependency_loader.rb +27 -2
  80. data/lib/puppet/pops/loader/loader.rb +12 -0
  81. data/lib/puppet/pops/loader/predefined_loader.rb +29 -0
  82. data/lib/puppet/pops/loader/runtime3_type_loader.rb +57 -0
  83. data/lib/puppet/pops/loader/static_loader.rb +92 -5
  84. data/lib/puppet/pops/loader/type_definition_instantiator.rb +25 -3
  85. data/lib/puppet/pops/loaders.rb +84 -14
  86. data/lib/puppet/pops/lookup/explainer.rb +38 -1
  87. data/lib/puppet/pops/lookup/interpolation.rb +115 -0
  88. data/lib/puppet/pops/lookup/sub_lookup.rb +86 -0
  89. data/lib/puppet/pops/merge_strategy.rb +0 -10
  90. data/lib/puppet/pops/model/ast_transformer.rb +8 -1
  91. data/lib/puppet/pops/model/factory.rb +31 -8
  92. data/lib/puppet/pops/model/model.rb +8 -0
  93. data/lib/puppet/pops/model/model_label_provider.rb +1 -0
  94. data/lib/puppet/pops/model/model_meta.rb +7 -1
  95. data/lib/puppet/pops/model/model_tree_dumper.rb +4 -0
  96. data/lib/puppet/pops/parser/egrammar.ra +24 -7
  97. data/lib/puppet/pops/parser/eparser.rb +863 -798
  98. data/lib/puppet/pops/parser/evaluating_parser.rb +4 -0
  99. data/lib/puppet/pops/parser/locator.rb +8 -4
  100. data/lib/puppet/pops/pcore.rb +30 -0
  101. data/lib/puppet/pops/types/class_loader.rb +2 -4
  102. data/lib/puppet/pops/types/implementation_registry.rb +146 -0
  103. data/lib/puppet/pops/types/iterable.rb +4 -4
  104. data/lib/puppet/pops/types/p_object_type.rb +846 -0
  105. data/lib/puppet/pops/types/p_runtime_type.rb +102 -0
  106. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +164 -0
  107. data/lib/puppet/pops/types/p_sem_ver_type.rb +113 -0
  108. data/lib/puppet/pops/types/puppet_object.rb +21 -0
  109. data/lib/puppet/pops/types/recursion_guard.rb +10 -0
  110. data/lib/puppet/pops/types/ruby_generator.rb +258 -0
  111. data/lib/puppet/pops/types/string_converter.rb +922 -0
  112. data/lib/puppet/pops/types/type_asserter.rb +2 -2
  113. data/lib/puppet/pops/types/type_calculator.rb +30 -6
  114. data/lib/puppet/pops/types/type_conversion_error.rb +15 -0
  115. data/lib/puppet/pops/types/type_factory.rb +49 -16
  116. data/lib/puppet/pops/types/type_formatter.rb +341 -106
  117. data/lib/puppet/pops/types/type_mismatch_describer.rb +132 -41
  118. data/lib/puppet/pops/types/type_parser.rb +205 -197
  119. data/lib/puppet/pops/types/types.rb +722 -202
  120. data/lib/puppet/pops/validation/checker4_0.rb +66 -4
  121. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  122. data/lib/puppet/pops/validation.rb +1 -1
  123. data/lib/puppet/pops/visitor.rb +3 -1
  124. data/lib/puppet/pops.rb +6 -0
  125. data/lib/puppet/property.rb +1 -1
  126. data/lib/puppet/provider/augeas/augeas.rb +1 -1
  127. data/lib/puppet/provider/package/pip.rb +64 -20
  128. data/lib/puppet/provider/package/pip3.rb +2 -0
  129. data/lib/puppet/provider/package/puppet_gem.rb +0 -0
  130. data/lib/puppet/provider/package/rpm.rb +112 -0
  131. data/lib/puppet/provider/package/yum.rb +7 -68
  132. data/lib/puppet/provider/service/daemontools.rb +3 -3
  133. data/lib/puppet/provider/service/init.rb +4 -2
  134. data/lib/puppet/provider/service/runit.rb +3 -3
  135. data/lib/puppet/provider/service/smf.rb +6 -3
  136. data/lib/puppet/provider/service/systemd.rb +59 -73
  137. data/lib/puppet/provider/user/user_role_add.rb +3 -1
  138. data/lib/puppet/reference/providers.rb +2 -3
  139. data/lib/puppet/resource/catalog.rb +34 -30
  140. data/lib/puppet/resource/type_collection.rb +23 -8
  141. data/lib/puppet/resource.rb +54 -37
  142. data/lib/puppet/settings/base_setting.rb +9 -3
  143. data/lib/puppet/settings/symbolic_enum_setting.rb +17 -0
  144. data/lib/puppet/settings.rb +5 -3
  145. data/lib/puppet/ssl/oids.rb +24 -2
  146. data/lib/puppet/test/test_helper.rb +0 -1
  147. data/lib/puppet/transaction.rb +0 -24
  148. data/lib/puppet/type/exec.rb +17 -17
  149. data/lib/puppet/type/file/content.rb +8 -8
  150. data/lib/puppet/type/file/ensure.rb +4 -4
  151. data/lib/puppet/type/file/source.rb +4 -4
  152. data/lib/puppet/type/file/target.rb +2 -2
  153. data/lib/puppet/type/file.rb +15 -5
  154. data/lib/puppet/type/filebucket.rb +1 -1
  155. data/lib/puppet/type/mount.rb +18 -1
  156. data/lib/puppet/type/package.rb +3 -3
  157. data/lib/puppet/type/schedule.rb +5 -5
  158. data/lib/puppet/type/service.rb +15 -0
  159. data/lib/puppet/type/sshkey.rb +5 -3
  160. data/lib/puppet/type/stage.rb +1 -1
  161. data/lib/puppet/type/tidy.rb +3 -3
  162. data/lib/puppet/type/zone.rb +5 -5
  163. data/lib/puppet/type.rb +13 -7
  164. data/lib/puppet/util/feature.rb +1 -1
  165. data/lib/puppet/util/monkey_patches.rb +18 -5
  166. data/lib/puppet/util/network_device/cisco/device.rb +16 -6
  167. data/lib/puppet/util/network_device/cisco/interface.rb +5 -6
  168. data/lib/puppet/util/plist.rb +3 -3
  169. data/lib/puppet/util/windows/file.rb +40 -10
  170. data/lib/puppet/util/windows.rb +1 -0
  171. data/lib/puppet/version.rb +1 -1
  172. data/spec/fixtures/unit/application/environments/production/data/common.yaml +13 -0
  173. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +3 -0
  174. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +3 -0
  175. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +5 -1
  176. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +2 -2
  177. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +2 -1
  178. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +2 -1
  179. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/data/empty_key.json +1 -0
  180. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/hiera.yaml +5 -0
  181. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/manifests/init.pp +2 -0
  182. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_json/metadata.json +9 -0
  183. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/data/empty_key.yaml +1 -0
  184. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/hiera.yaml +5 -0
  185. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/manifests/init.pp +2 -0
  186. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_key_yaml/metadata.json +9 -0
  187. data/spec/fixtures/unit/functions/lookup/environments/production/modules/empty_yaml/data/empty.yaml +1 -0
  188. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -0
  189. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +5 -0
  190. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +6 -0
  191. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -0
  192. data/spec/fixtures/unit/provider/service/smf/svcs.out +4 -3
  193. data/spec/integration/agent/logging_spec.rb +0 -0
  194. data/spec/integration/application/apply_spec.rb +0 -0
  195. data/spec/integration/application/doc_spec.rb +0 -0
  196. data/spec/integration/configurer_spec.rb +0 -0
  197. data/spec/integration/data_binding_spec.rb +0 -34
  198. data/spec/integration/defaults_spec.rb +0 -0
  199. data/spec/integration/faces/ca_spec.rb +0 -0
  200. data/spec/integration/faces/documentation_spec.rb +0 -0
  201. data/spec/integration/file_serving/fileset_spec.rb +0 -0
  202. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -0
  203. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -0
  204. data/spec/integration/indirector/direct_file_server_spec.rb +0 -0
  205. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -0
  206. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -0
  207. data/spec/integration/indirector/node/ldap_spec.rb +0 -0
  208. data/spec/integration/module_tool/tar/mini_spec.rb +27 -27
  209. data/spec/integration/network/formats_spec.rb +0 -0
  210. data/spec/integration/node/environment_spec.rb +0 -0
  211. data/spec/integration/node/facts_spec.rb +0 -0
  212. data/spec/integration/node_spec.rb +0 -0
  213. data/spec/integration/parser/catalog_spec.rb +14 -2
  214. data/spec/integration/parser/collection_spec.rb +0 -0
  215. data/spec/integration/parser/compiler_spec.rb +94 -3
  216. data/spec/integration/parser/functions/require_spec.rb +0 -0
  217. data/spec/integration/parser/parameter_defaults_spec.rb +19 -1
  218. data/spec/integration/parser/resource_expressions_spec.rb +1 -1
  219. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -0
  220. data/spec/integration/provider/mount_spec.rb +0 -0
  221. data/spec/integration/provider/service/init_spec.rb +0 -0
  222. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -0
  223. data/spec/integration/reference/providers_spec.rb +0 -0
  224. data/spec/integration/reports_spec.rb +0 -0
  225. data/spec/integration/resource/catalog_spec.rb +0 -0
  226. data/spec/integration/resource/type_collection_spec.rb +8 -0
  227. data/spec/integration/ssl/certificate_authority_spec.rb +0 -0
  228. data/spec/integration/ssl/certificate_request_spec.rb +0 -0
  229. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -0
  230. data/spec/integration/ssl/host_spec.rb +0 -0
  231. data/spec/integration/transaction/report_spec.rb +0 -0
  232. data/spec/integration/transaction_spec.rb +0 -0
  233. data/spec/integration/type/exec_spec.rb +0 -0
  234. data/spec/integration/type/file_spec.rb +0 -0
  235. data/spec/integration/type/package_spec.rb +0 -0
  236. data/spec/integration/type/tidy_spec.rb +0 -0
  237. data/spec/integration/type_spec.rb +0 -0
  238. data/spec/integration/util/autoload_spec.rb +0 -0
  239. data/spec/integration/util/rdoc/parser_spec.rb +0 -0
  240. data/spec/integration/util/settings_spec.rb +26 -0
  241. data/spec/integration/util/windows/registry_spec.rb +0 -0
  242. data/spec/integration/util/windows/security_spec.rb +0 -0
  243. data/spec/integration/util/windows/user_spec.rb +0 -0
  244. data/spec/integration/util_spec.rb +0 -0
  245. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -0
  246. data/spec/lib/puppet/face/basetest.rb +0 -0
  247. data/spec/lib/puppet/face/huzzah.rb +0 -0
  248. data/spec/lib/puppet_spec/compiler.rb +11 -4
  249. data/spec/lib/puppet_spec/files.rb +0 -0
  250. data/spec/lib/puppet_spec/fixtures.rb +0 -0
  251. data/spec/lib/puppet_spec/verbose.rb +0 -0
  252. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -0
  253. data/spec/shared_behaviours/file_server_terminus.rb +0 -0
  254. data/spec/shared_behaviours/file_serving.rb +0 -0
  255. data/spec/shared_behaviours/memory_terminus.rb +0 -0
  256. data/spec/shared_behaviours/path_parameters.rb +0 -0
  257. data/spec/shared_behaviours/things_that_declare_options.rb +0 -0
  258. data/spec/shared_contexts/types_setup.rb +4 -0
  259. data/spec/spec_helper.rb +0 -0
  260. data/spec/unit/agent/locker_spec.rb +0 -0
  261. data/spec/unit/agent_spec.rb +0 -0
  262. data/spec/unit/application/agent_spec.rb +0 -0
  263. data/spec/unit/application/apply_spec.rb +0 -0
  264. data/spec/unit/application/cert_spec.rb +0 -0
  265. data/spec/unit/application/certificate_spec.rb +0 -0
  266. data/spec/unit/application/config_spec.rb +0 -0
  267. data/spec/unit/application/describe_spec.rb +0 -0
  268. data/spec/unit/application/device_spec.rb +0 -0
  269. data/spec/unit/application/doc_spec.rb +0 -0
  270. data/spec/unit/application/face_base_spec.rb +0 -0
  271. data/spec/unit/application/facts_spec.rb +0 -0
  272. data/spec/unit/application/filebucket_spec.rb +0 -0
  273. data/spec/unit/application/indirection_base_spec.rb +0 -0
  274. data/spec/unit/application/inspect_spec.rb +19 -8
  275. data/spec/unit/application/lookup_spec.rb +92 -10
  276. data/spec/unit/application/master_spec.rb +0 -0
  277. data/spec/unit/application/resource_spec.rb +0 -0
  278. data/spec/unit/application_spec.rb +0 -0
  279. data/spec/unit/appmgmt_spec.rb +44 -35
  280. data/spec/unit/capability_spec.rb +33 -53
  281. data/spec/unit/configurer/downloader_factory_spec.rb +0 -0
  282. data/spec/unit/configurer/downloader_spec.rb +0 -0
  283. data/spec/unit/configurer/fact_handler_spec.rb +0 -0
  284. data/spec/unit/configurer/plugin_handler_spec.rb +0 -0
  285. data/spec/unit/configurer_spec.rb +0 -0
  286. data/spec/unit/confine/exists_spec.rb +0 -0
  287. data/spec/unit/confine/false_spec.rb +0 -0
  288. data/spec/unit/confine/feature_spec.rb +0 -0
  289. data/spec/unit/confine/true_spec.rb +0 -0
  290. data/spec/unit/confine/variable_spec.rb +0 -0
  291. data/spec/unit/confine_collection_spec.rb +0 -0
  292. data/spec/unit/confine_spec.rb +0 -0
  293. data/spec/unit/confiner_spec.rb +0 -0
  294. data/spec/unit/daemon_spec.rb +0 -0
  295. data/spec/unit/data_providers/function_data_provider_spec.rb +19 -1
  296. data/spec/unit/data_providers/hiera_data_provider_spec.rb +2 -2
  297. data/spec/unit/defaults_spec.rb +18 -0
  298. data/spec/unit/external/pson_spec.rb +0 -0
  299. data/spec/unit/face/catalog_spec.rb +0 -0
  300. data/spec/unit/face/certificate_spec.rb +0 -0
  301. data/spec/unit/face/config_spec.rb +0 -0
  302. data/spec/unit/face/facts_spec.rb +0 -0
  303. data/spec/unit/face/file_spec.rb +0 -0
  304. data/spec/unit/face/help_spec.rb +0 -0
  305. data/spec/unit/face/node_spec.rb +0 -0
  306. data/spec/unit/face/plugin_spec.rb +0 -0
  307. data/spec/unit/face_spec.rb +0 -0
  308. data/spec/unit/file_bucket/dipper_spec.rb +0 -0
  309. data/spec/unit/file_bucket/file_spec.rb +0 -0
  310. data/spec/unit/file_serving/base_spec.rb +0 -0
  311. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -0
  312. data/spec/unit/file_serving/configuration_spec.rb +0 -0
  313. data/spec/unit/file_serving/content_spec.rb +0 -0
  314. data/spec/unit/file_serving/fileset_spec.rb +0 -0
  315. data/spec/unit/file_serving/metadata_spec.rb +0 -0
  316. data/spec/unit/file_serving/mount/file_spec.rb +0 -0
  317. data/spec/unit/file_serving/mount/modules_spec.rb +0 -0
  318. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -0
  319. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -0
  320. data/spec/unit/file_serving/mount_spec.rb +0 -0
  321. data/spec/unit/file_serving/terminus_helper_spec.rb +0 -0
  322. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -0
  323. data/spec/unit/file_system/uniquefile_spec.rb +20 -0
  324. data/spec/unit/file_system_spec.rb +61 -0
  325. data/spec/unit/functions/assert_type_spec.rb +8 -0
  326. data/spec/unit/functions/defined_spec.rb +0 -0
  327. data/spec/unit/functions/dig_spec.rb +58 -0
  328. data/spec/unit/functions/hiera_spec.rb +0 -0
  329. data/spec/unit/functions/lest_spec.rb +34 -0
  330. data/spec/unit/functions/lookup_spec.rb +109 -3
  331. data/spec/unit/functions/new_spec.rb +543 -0
  332. data/spec/unit/functions/regsubst_spec.rb +8 -0
  333. data/spec/unit/functions/split_spec.rb +0 -0
  334. data/spec/unit/functions/then_spec.rb +40 -0
  335. data/spec/unit/functions/versioncmp_spec.rb +0 -0
  336. data/spec/unit/functions4_spec.rb +78 -10
  337. data/spec/unit/graph/relationship_graph_spec.rb +0 -0
  338. data/spec/unit/graph/simple_graph_spec.rb +0 -0
  339. data/spec/unit/hiera_puppet_spec.rb +49 -8
  340. data/spec/unit/indirector/catalog/compiler_spec.rb +7 -0
  341. data/spec/unit/indirector/catalog/json_spec.rb +0 -0
  342. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -0
  343. data/spec/unit/indirector/catalog/rest_spec.rb +0 -0
  344. data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -0
  345. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -0
  346. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -0
  347. data/spec/unit/indirector/certificate/ca_spec.rb +0 -0
  348. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -0
  349. data/spec/unit/indirector/certificate/file_spec.rb +0 -0
  350. data/spec/unit/indirector/certificate/rest_spec.rb +0 -0
  351. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -0
  352. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -0
  353. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -0
  354. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -0
  355. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -0
  356. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -0
  357. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -0
  358. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -0
  359. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -0
  360. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -0
  361. data/spec/unit/indirector/code_spec.rb +0 -0
  362. data/spec/unit/indirector/direct_file_server_spec.rb +0 -0
  363. data/spec/unit/indirector/envelope_spec.rb +0 -0
  364. data/spec/unit/indirector/exec_spec.rb +0 -0
  365. data/spec/unit/indirector/face_spec.rb +0 -0
  366. data/spec/unit/indirector/facts/facter_spec.rb +0 -0
  367. data/spec/unit/indirector/facts/network_device_spec.rb +0 -0
  368. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -0
  369. data/spec/unit/indirector/facts/yaml_spec.rb +0 -0
  370. data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -0
  371. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -0
  372. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -0
  373. data/spec/unit/indirector/file_content/file_spec.rb +0 -0
  374. data/spec/unit/indirector/file_content/rest_spec.rb +0 -0
  375. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -0
  376. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -0
  377. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -0
  378. data/spec/unit/indirector/file_server_spec.rb +0 -0
  379. data/spec/unit/indirector/indirection_spec.rb +0 -0
  380. data/spec/unit/indirector/json_spec.rb +0 -0
  381. data/spec/unit/indirector/key/ca_spec.rb +0 -0
  382. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -0
  383. data/spec/unit/indirector/key/file_spec.rb +0 -0
  384. data/spec/unit/indirector/ldap_spec.rb +0 -0
  385. data/spec/unit/indirector/memory_spec.rb +0 -0
  386. data/spec/unit/indirector/msgpack_spec.rb +11 -1
  387. data/spec/unit/indirector/node/exec_spec.rb +0 -0
  388. data/spec/unit/indirector/node/ldap_spec.rb +0 -0
  389. data/spec/unit/indirector/node/memory_spec.rb +0 -0
  390. data/spec/unit/indirector/node/msgpack_spec.rb +0 -0
  391. data/spec/unit/indirector/node/plain_spec.rb +0 -0
  392. data/spec/unit/indirector/node/rest_spec.rb +0 -0
  393. data/spec/unit/indirector/node/store_configs_spec.rb +0 -0
  394. data/spec/unit/indirector/node/yaml_spec.rb +0 -0
  395. data/spec/unit/indirector/plain_spec.rb +0 -0
  396. data/spec/unit/indirector/report/msgpack_spec.rb +0 -0
  397. data/spec/unit/indirector/report/processor_spec.rb +0 -0
  398. data/spec/unit/indirector/report/rest_spec.rb +0 -0
  399. data/spec/unit/indirector/report/yaml_spec.rb +0 -0
  400. data/spec/unit/indirector/request_spec.rb +0 -0
  401. data/spec/unit/indirector/resource/ral_spec.rb +0 -0
  402. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -0
  403. data/spec/unit/indirector/resource_type/parser_spec.rb +5 -0
  404. data/spec/unit/indirector/resource_type/rest_spec.rb +0 -0
  405. data/spec/unit/indirector/rest_spec.rb +12 -0
  406. data/spec/unit/indirector/ssl_file_spec.rb +0 -0
  407. data/spec/unit/indirector/status/rest_spec.rb +0 -0
  408. data/spec/unit/indirector/store_configs_spec.rb +0 -0
  409. data/spec/unit/indirector/terminus_spec.rb +0 -0
  410. data/spec/unit/indirector/yaml_spec.rb +0 -0
  411. data/spec/unit/indirector_spec.rb +0 -0
  412. data/spec/unit/interface/action_builder_spec.rb +0 -0
  413. data/spec/unit/interface/action_manager_spec.rb +0 -0
  414. data/spec/unit/interface/action_spec.rb +0 -0
  415. data/spec/unit/interface/documentation_spec.rb +0 -0
  416. data/spec/unit/interface/face_collection_spec.rb +0 -0
  417. data/spec/unit/interface/option_builder_spec.rb +0 -0
  418. data/spec/unit/interface/option_spec.rb +0 -0
  419. data/spec/unit/interface_spec.rb +0 -0
  420. data/spec/unit/man_spec.rb +0 -0
  421. data/spec/unit/module_spec.rb +30 -6
  422. data/spec/unit/module_tool/applications/builder_spec.rb +23 -3
  423. data/spec/unit/module_tool_spec.rb +0 -0
  424. data/spec/unit/network/auth_config_parser_spec.rb +16 -0
  425. data/spec/unit/network/authconfig_spec.rb +0 -0
  426. data/spec/unit/network/authstore_spec.rb +0 -0
  427. data/spec/unit/network/format_handler_spec.rb +0 -0
  428. data/spec/unit/network/format_spec.rb +0 -0
  429. data/spec/unit/network/formats_spec.rb +0 -0
  430. data/spec/unit/network/http/api/indirected_routes_spec.rb +21 -13
  431. data/spec/unit/network/http/api/master/v3/environment_spec.rb +60 -0
  432. data/spec/unit/network/http/api/master/v3_spec.rb +0 -0
  433. data/spec/unit/network/http/compression_spec.rb +0 -0
  434. data/spec/unit/network/http/connection_spec.rb +0 -0
  435. data/spec/unit/network/http/factory_spec.rb +0 -0
  436. data/spec/unit/network/http/handler_spec.rb +0 -0
  437. data/spec/unit/network/http/nocache_pool_spec.rb +0 -0
  438. data/spec/unit/network/http/pool_spec.rb +0 -0
  439. data/spec/unit/network/http/rack/rest_spec.rb +7 -0
  440. data/spec/unit/network/http/rack_spec.rb +0 -0
  441. data/spec/unit/network/http/session_spec.rb +0 -0
  442. data/spec/unit/network/http/site_spec.rb +0 -0
  443. data/spec/unit/network/http/webrick/rest_spec.rb +0 -0
  444. data/spec/unit/network/http/webrick_spec.rb +0 -0
  445. data/spec/unit/network/http_pool_spec.rb +0 -0
  446. data/spec/unit/network/http_spec.rb +0 -0
  447. data/spec/unit/network/resolver_spec.rb +0 -0
  448. data/spec/unit/network/rights_spec.rb +0 -0
  449. data/spec/unit/network/server_spec.rb +0 -0
  450. data/spec/unit/node/environment_spec.rb +10 -0
  451. data/spec/unit/node/facts_spec.rb +0 -0
  452. data/spec/unit/node_spec.rb +0 -0
  453. data/spec/unit/other/selinux_spec.rb +0 -0
  454. data/spec/unit/parameter/path_spec.rb +0 -0
  455. data/spec/unit/parameter/value_collection_spec.rb +0 -0
  456. data/spec/unit/parameter/value_spec.rb +0 -0
  457. data/spec/unit/parameter_spec.rb +0 -0
  458. data/spec/unit/parser/ast/leaf_spec.rb +0 -0
  459. data/spec/unit/parser/compiler_spec.rb +20 -1
  460. data/spec/unit/parser/files_spec.rb +0 -0
  461. data/spec/unit/parser/functions/create_resources_spec.rb +2 -2
  462. data/spec/unit/parser/functions/defined_spec.rb +0 -0
  463. data/spec/unit/parser/functions/digest_spec.rb +0 -0
  464. data/spec/unit/parser/functions/fail_spec.rb +0 -0
  465. data/spec/unit/parser/functions/file_spec.rb +0 -0
  466. data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -0
  467. data/spec/unit/parser/functions/generate_spec.rb +0 -0
  468. data/spec/unit/parser/functions/hiera_spec.rb +0 -0
  469. data/spec/unit/parser/functions/include_spec.rb +0 -0
  470. data/spec/unit/parser/functions/inline_template_spec.rb +0 -0
  471. data/spec/unit/parser/functions/realize_spec.rb +0 -0
  472. data/spec/unit/parser/functions/regsubst_spec.rb +0 -0
  473. data/spec/unit/parser/functions/require_spec.rb +0 -0
  474. data/spec/unit/parser/functions/scanf_spec.rb +0 -0
  475. data/spec/unit/parser/functions/shared.rb +1 -1
  476. data/spec/unit/parser/functions/shellquote_spec.rb +0 -0
  477. data/spec/unit/parser/functions/split_spec.rb +0 -0
  478. data/spec/unit/parser/functions/sprintf_spec.rb +0 -0
  479. data/spec/unit/parser/functions/tag_spec.rb +0 -0
  480. data/spec/unit/parser/functions/template_spec.rb +0 -0
  481. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -0
  482. data/spec/unit/parser/functions_spec.rb +0 -0
  483. data/spec/unit/parser/relationship_spec.rb +0 -0
  484. data/spec/unit/parser/resource/param_spec.rb +0 -0
  485. data/spec/unit/parser/resource_spec.rb +8 -1
  486. data/spec/unit/parser/scope_spec.rb +45 -0
  487. data/spec/unit/parser/templatewrapper_spec.rb +0 -0
  488. data/spec/unit/parser/type_loader_spec.rb +0 -0
  489. data/spec/unit/pops/evaluator/access_ops_spec.rb +14 -0
  490. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +13 -5
  491. data/spec/unit/pops/loaders/loaders_spec.rb +8 -8
  492. data/spec/unit/pops/loaders/static_loader_spec.rb +92 -1
  493. data/spec/unit/pops/lookup/interpolation_spec.rb +313 -0
  494. data/spec/unit/pops/parser/lexer2_spec.rb +2 -9
  495. data/spec/unit/pops/parser/parse_application_spec.rb +3 -8
  496. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +19 -0
  497. data/spec/unit/pops/parser/parse_capabilities_spec.rb +3 -10
  498. data/spec/unit/pops/parser/parse_site_spec.rb +19 -10
  499. data/spec/unit/pops/parser/parser_rspec_helper.rb +0 -4
  500. data/spec/unit/pops/types/enumeration_spec.rb +13 -12
  501. data/spec/unit/pops/types/iterable_spec.rb +2 -2
  502. data/spec/unit/pops/types/p_object_type_spec.rb +1060 -0
  503. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +285 -0
  504. data/spec/unit/pops/types/recursion_guard_spec.rb +19 -17
  505. data/spec/unit/pops/types/ruby_generator_spec.rb +261 -0
  506. data/spec/unit/pops/types/string_converter_spec.rb +904 -0
  507. data/spec/unit/pops/types/type_asserter_spec.rb +3 -3
  508. data/spec/unit/pops/types/type_calculator_spec.rb +462 -412
  509. data/spec/unit/pops/types/type_factory_spec.rb +129 -88
  510. data/spec/unit/pops/types/type_formatter_spec.rb +80 -8
  511. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +27 -2
  512. data/spec/unit/pops/types/type_parser_spec.rb +55 -16
  513. data/spec/unit/pops/types/types_spec.rb +320 -0
  514. data/spec/unit/pops/validator/validator_spec.rb +84 -10
  515. data/spec/unit/property/ensure_spec.rb +0 -0
  516. data/spec/unit/property/keyvalue_spec.rb +0 -0
  517. data/spec/unit/property/list_spec.rb +0 -0
  518. data/spec/unit/property/ordered_list_spec.rb +0 -0
  519. data/spec/unit/property_spec.rb +0 -0
  520. data/spec/unit/provider/augeas/augeas_spec.rb +0 -0
  521. data/spec/unit/provider/cisco_spec.rb +0 -0
  522. data/spec/unit/provider/command_spec.rb +0 -0
  523. data/spec/unit/provider/cron/crontab_spec.rb +0 -0
  524. data/spec/unit/provider/exec/posix_spec.rb +0 -0
  525. data/spec/unit/provider/exec/shell_spec.rb +0 -0
  526. data/spec/unit/provider/exec/windows_spec.rb +0 -0
  527. data/spec/unit/provider/exec_spec.rb +0 -0
  528. data/spec/unit/provider/file/posix_spec.rb +0 -0
  529. data/spec/unit/provider/file/windows_spec.rb +0 -0
  530. data/spec/unit/provider/group/groupadd_spec.rb +0 -0
  531. data/spec/unit/provider/group/ldap_spec.rb +0 -0
  532. data/spec/unit/provider/group/pw_spec.rb +0 -0
  533. data/spec/unit/provider/group/windows_adsi_spec.rb +0 -0
  534. data/spec/unit/provider/host/parsed_spec.rb +0 -0
  535. data/spec/unit/provider/interface/cisco_spec.rb +0 -0
  536. data/spec/unit/provider/ldap_spec.rb +0 -0
  537. data/spec/unit/provider/macauthorization_spec.rb +0 -0
  538. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -0
  539. data/spec/unit/provider/mount/parsed_spec.rb +0 -0
  540. data/spec/unit/provider/mount_spec.rb +0 -0
  541. data/spec/unit/provider/naginator_spec.rb +0 -0
  542. data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -0
  543. data/spec/unit/provider/nameservice_spec.rb +0 -0
  544. data/spec/unit/provider/network_device_spec.rb +0 -0
  545. data/spec/unit/provider/package/aix_spec.rb +0 -0
  546. data/spec/unit/provider/package/appdmg_spec.rb +0 -0
  547. data/spec/unit/provider/package/apt_spec.rb +0 -0
  548. data/spec/unit/provider/package/aptitude_spec.rb +0 -0
  549. data/spec/unit/provider/package/aptrpm_spec.rb +0 -0
  550. data/spec/unit/provider/package/dpkg_spec.rb +0 -0
  551. data/spec/unit/provider/package/freebsd_spec.rb +0 -0
  552. data/spec/unit/provider/package/gem_spec.rb +0 -0
  553. data/spec/unit/provider/package/hpux_spec.rb +0 -0
  554. data/spec/unit/provider/package/macports_spec.rb +0 -0
  555. data/spec/unit/provider/package/nim_spec.rb +0 -0
  556. data/spec/unit/provider/package/openbsd_spec.rb +0 -0
  557. data/spec/unit/provider/package/opkg_spec.rb +0 -0
  558. data/spec/unit/provider/package/pacman_spec.rb +0 -0
  559. data/spec/unit/provider/package/pip3_spec.rb +9 -262
  560. data/spec/unit/provider/package/pip_spec.rb +85 -22
  561. data/spec/unit/provider/package/pkg_spec.rb +0 -0
  562. data/spec/unit/provider/package/pkgutil_spec.rb +0 -0
  563. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -0
  564. data/spec/unit/provider/package/rpm_spec.rb +160 -3
  565. data/spec/unit/provider/package/sun_spec.rb +0 -0
  566. data/spec/unit/provider/package/windows/package_spec.rb +0 -0
  567. data/spec/unit/provider/package/windows_spec.rb +0 -0
  568. data/spec/unit/provider/package/yum_spec.rb +23 -134
  569. data/spec/unit/provider/package/zypper_spec.rb +0 -0
  570. data/spec/unit/provider/parsedfile_spec.rb +0 -0
  571. data/spec/unit/provider/selboolean_spec.rb +0 -0
  572. data/spec/unit/provider/selmodule_spec.rb +0 -0
  573. data/spec/unit/provider/service/base_spec.rb +0 -0
  574. data/spec/unit/provider/service/bsd_spec.rb +0 -0
  575. data/spec/unit/provider/service/daemontools_spec.rb +0 -0
  576. data/spec/unit/provider/service/debian_spec.rb +0 -0
  577. data/spec/unit/provider/service/freebsd_spec.rb +0 -0
  578. data/spec/unit/provider/service/gentoo_spec.rb +0 -0
  579. data/spec/unit/provider/service/init_spec.rb +0 -0
  580. data/spec/unit/provider/service/launchd_spec.rb +0 -0
  581. data/spec/unit/provider/service/openbsd_spec.rb +0 -0
  582. data/spec/unit/provider/service/openrc_spec.rb +0 -0
  583. data/spec/unit/provider/service/openwrt_spec.rb +0 -0
  584. data/spec/unit/provider/service/rcng_spec.rb +0 -0
  585. data/spec/unit/provider/service/redhat_spec.rb +0 -0
  586. data/spec/unit/provider/service/runit_spec.rb +0 -0
  587. data/spec/unit/provider/service/smf_spec.rb +14 -2
  588. data/spec/unit/provider/service/src_spec.rb +0 -0
  589. data/spec/unit/provider/service/systemd_spec.rb +34 -42
  590. data/spec/unit/provider/service/upstart_spec.rb +0 -0
  591. data/spec/unit/provider/service/windows_spec.rb +0 -0
  592. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -0
  593. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -0
  594. data/spec/unit/provider/user/directoryservice_spec.rb +0 -0
  595. data/spec/unit/provider/user/hpux_spec.rb +0 -0
  596. data/spec/unit/provider/user/ldap_spec.rb +0 -0
  597. data/spec/unit/provider/user/openbsd_spec.rb +0 -0
  598. data/spec/unit/provider/user/pw_spec.rb +0 -0
  599. data/spec/unit/provider/user/user_role_add_spec.rb +0 -0
  600. data/spec/unit/provider/user/useradd_spec.rb +0 -0
  601. data/spec/unit/provider/user/windows_adsi_spec.rb +0 -0
  602. data/spec/unit/provider/vlan/cisco_spec.rb +0 -0
  603. data/spec/unit/provider/zfs/zfs_spec.rb +0 -0
  604. data/spec/unit/provider/zone/solaris_spec.rb +0 -0
  605. data/spec/unit/provider/zpool/zpool_spec.rb +0 -0
  606. data/spec/unit/provider_spec.rb +0 -0
  607. data/spec/unit/puppet_spec.rb +0 -0
  608. data/spec/unit/relationship_spec.rb +0 -0
  609. data/spec/unit/reports/http_spec.rb +0 -0
  610. data/spec/unit/reports/store_spec.rb +0 -0
  611. data/spec/unit/reports_spec.rb +0 -0
  612. data/spec/unit/resource/capability_finder_spec.rb +10 -2
  613. data/spec/unit/resource/catalog_spec.rb +27 -0
  614. data/spec/unit/resource/status_spec.rb +0 -0
  615. data/spec/unit/resource/type_collection_helper_spec.rb +0 -0
  616. data/spec/unit/resource/type_collection_spec.rb +0 -0
  617. data/spec/unit/resource/type_spec.rb +0 -0
  618. data/spec/unit/resource_spec.rb +0 -0
  619. data/spec/unit/settings/directory_setting_spec.rb +0 -0
  620. data/spec/unit/settings/duration_setting_spec.rb +0 -0
  621. data/spec/unit/settings/file_setting_spec.rb +6 -0
  622. data/spec/unit/settings/path_setting_spec.rb +0 -0
  623. data/spec/unit/settings/priority_setting_spec.rb +0 -0
  624. data/spec/unit/settings_spec.rb +1 -1
  625. data/spec/unit/ssl/base_spec.rb +0 -0
  626. data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -0
  627. data/spec/unit/ssl/certificate_authority_spec.rb +0 -0
  628. data/spec/unit/ssl/certificate_factory_spec.rb +0 -0
  629. data/spec/unit/ssl/certificate_request_spec.rb +0 -0
  630. data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -0
  631. data/spec/unit/ssl/certificate_spec.rb +0 -0
  632. data/spec/unit/ssl/configuration_spec.rb +0 -0
  633. data/spec/unit/ssl/host_spec.rb +0 -0
  634. data/spec/unit/ssl/inventory_spec.rb +0 -0
  635. data/spec/unit/ssl/key_spec.rb +0 -0
  636. data/spec/unit/status_spec.rb +0 -0
  637. data/spec/unit/transaction/additional_resource_generator_spec.rb +80 -65
  638. data/spec/unit/transaction/event_manager_spec.rb +0 -0
  639. data/spec/unit/transaction/event_spec.rb +0 -0
  640. data/spec/unit/transaction/report_spec.rb +0 -0
  641. data/spec/unit/transaction/resource_harness_spec.rb +0 -0
  642. data/spec/unit/transaction_spec.rb +0 -0
  643. data/spec/unit/type/augeas_spec.rb +0 -0
  644. data/spec/unit/type/component_spec.rb +0 -0
  645. data/spec/unit/type/computer_spec.rb +0 -0
  646. data/spec/unit/type/cron_spec.rb +0 -0
  647. data/spec/unit/type/exec_spec.rb +0 -0
  648. data/spec/unit/type/file/checksum_spec.rb +0 -0
  649. data/spec/unit/type/file/checksum_value_spec.rb +0 -0
  650. data/spec/unit/type/file/content_spec.rb +0 -0
  651. data/spec/unit/type/file/ctime_spec.rb +0 -0
  652. data/spec/unit/type/file/ensure_spec.rb +0 -0
  653. data/spec/unit/type/file/group_spec.rb +0 -0
  654. data/spec/unit/type/file/mode_spec.rb +0 -0
  655. data/spec/unit/type/file/mtime_spec.rb +0 -0
  656. data/spec/unit/type/file/owner_spec.rb +0 -0
  657. data/spec/unit/type/file/selinux_spec.rb +0 -0
  658. data/spec/unit/type/file/source_spec.rb +0 -0
  659. data/spec/unit/type/file/type_spec.rb +0 -0
  660. data/spec/unit/type/file_spec.rb +0 -0
  661. data/spec/unit/type/filebucket_spec.rb +0 -0
  662. data/spec/unit/type/group_spec.rb +0 -0
  663. data/spec/unit/type/host_spec.rb +0 -0
  664. data/spec/unit/type/interface_spec.rb +0 -0
  665. data/spec/unit/type/k5login_spec.rb +0 -0
  666. data/spec/unit/type/macauthorization_spec.rb +0 -0
  667. data/spec/unit/type/mailalias_spec.rb +0 -0
  668. data/spec/unit/type/maillist_spec.rb +0 -0
  669. data/spec/unit/type/mcx_spec.rb +0 -0
  670. data/spec/unit/type/mount_spec.rb +51 -10
  671. data/spec/unit/type/nagios_spec.rb +0 -0
  672. data/spec/unit/type/noop_metaparam_spec.rb +0 -0
  673. data/spec/unit/type/package/package_settings_spec.rb +0 -0
  674. data/spec/unit/type/package_spec.rb +0 -0
  675. data/spec/unit/type/resources_spec.rb +0 -0
  676. data/spec/unit/type/schedule_spec.rb +0 -0
  677. data/spec/unit/type/selboolean_spec.rb +0 -0
  678. data/spec/unit/type/selmodule_spec.rb +0 -0
  679. data/spec/unit/type/service_spec.rb +16 -0
  680. data/spec/unit/type/ssh_authorized_key_spec.rb +0 -0
  681. data/spec/unit/type/sshkey_spec.rb +0 -0
  682. data/spec/unit/type/stage_spec.rb +0 -0
  683. data/spec/unit/type/tidy_spec.rb +0 -0
  684. data/spec/unit/type/user_spec.rb +0 -0
  685. data/spec/unit/type/vlan_spec.rb +0 -0
  686. data/spec/unit/type/whit_spec.rb +0 -0
  687. data/spec/unit/type/yumrepo_spec.rb +0 -0
  688. data/spec/unit/type/zfs_spec.rb +0 -0
  689. data/spec/unit/type/zone_spec.rb +0 -0
  690. data/spec/unit/type/zpool_spec.rb +0 -0
  691. data/spec/unit/type_spec.rb +14 -0
  692. data/spec/unit/util/autoload_spec.rb +0 -0
  693. data/spec/unit/util/backups_spec.rb +0 -0
  694. data/spec/unit/util/checksums_spec.rb +0 -0
  695. data/spec/unit/util/colors_spec.rb +0 -0
  696. data/spec/unit/util/command_line_spec.rb +0 -0
  697. data/spec/unit/util/constant_inflector_spec.rb +0 -0
  698. data/spec/unit/util/diff_spec.rb +0 -0
  699. data/spec/unit/util/errors_spec.rb +0 -0
  700. data/spec/unit/util/execution_spec.rb +0 -0
  701. data/spec/unit/util/execution_stub_spec.rb +0 -0
  702. data/spec/unit/util/feature_spec.rb +1 -1
  703. data/spec/unit/util/filetype_spec.rb +0 -0
  704. data/spec/unit/util/ldap/connection_spec.rb +0 -0
  705. data/spec/unit/util/ldap/generator_spec.rb +0 -0
  706. data/spec/unit/util/ldap/manager_spec.rb +0 -0
  707. data/spec/unit/util/log/destinations_spec.rb +0 -0
  708. data/spec/unit/util/log_spec.rb +0 -0
  709. data/spec/unit/util/logging_spec.rb +0 -0
  710. data/spec/unit/util/metric_spec.rb +0 -0
  711. data/spec/unit/util/monkey_patches_spec.rb +79 -3
  712. data/spec/unit/util/nagios_maker_spec.rb +0 -0
  713. data/spec/unit/util/network_device/cisco/device_spec.rb +1 -1
  714. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -0
  715. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -0
  716. data/spec/unit/util/network_device/config_spec.rb +0 -0
  717. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -0
  718. data/spec/unit/util/network_device/transport/base_spec.rb +0 -0
  719. data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -0
  720. data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -0
  721. data/spec/unit/util/package_spec.rb +0 -0
  722. data/spec/unit/util/posix_spec.rb +0 -0
  723. data/spec/unit/util/rdoc_spec.rb +0 -0
  724. data/spec/unit/util/resource_template_spec.rb +0 -0
  725. data/spec/unit/util/retry_action_spec.rb +0 -0
  726. data/spec/unit/util/run_mode_spec.rb +0 -0
  727. data/spec/unit/util/selinux_spec.rb +0 -0
  728. data/spec/unit/util/storage_spec.rb +0 -0
  729. data/spec/unit/util/suidmanager_spec.rb +0 -0
  730. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -0
  731. data/spec/unit/util/tagging_spec.rb +0 -0
  732. data/spec/unit/util/user_attr_spec.rb +0 -0
  733. data/spec/unit/util/warnings_spec.rb +0 -0
  734. data/spec/unit/util/windows/adsi_spec.rb +0 -0
  735. data/spec/unit/util/windows/file_spec.rb +34 -0
  736. data/spec/unit/util/windows/root_certs_spec.rb +0 -0
  737. data/spec/unit/util/windows/sid_spec.rb +0 -0
  738. data/spec/unit/util_spec.rb +0 -0
  739. data/spec/watchr.rb +0 -0
  740. metadata +3402 -3337
  741. checksums.yaml +0 -7
  742. data/ext/puppet-nm-dispatcher +0 -13
  743. data/lib/puppet/pops/types/types_meta.rb +0 -0
  744. data/spec/integration/provider/package_spec.rb +0 -35
  745. data/spec/unit/data_providers/hiera_interpolation_spec.rb +0 -57
@@ -238,7 +238,6 @@ module Puppet::Test
238
238
  #
239
239
  # I would make these even shorter, but OpenSSL doesn't support anything
240
240
  # below 512 bits. Sad, really, because a 0 bit key would be just fine.
241
- Puppet[:req_bits] = 512
242
241
  Puppet[:keylength] = 512
243
242
 
244
243
  # Although we setup a testing context during initialization, some tests
@@ -275,30 +275,6 @@ class Puppet::Transaction
275
275
  resource_status(resource).failed_dependencies = failed.to_a
276
276
  end
277
277
 
278
- # A general method for recursively generating new resources from a
279
- # resource.
280
- def generate_additional_resources(resource)
281
- return unless resource.respond_to?(:generate)
282
- begin
283
- made = resource.generate
284
- rescue => detail
285
- resource.log_exception(detail, "Failed to generate additional resources using 'generate': #{detail}")
286
- end
287
- return unless made
288
- made = [made] unless made.is_a?(Array)
289
- made.uniq.each do |res|
290
- begin
291
- res.tag(*resource.tags)
292
- @catalog.add_resource(res)
293
- res.finish
294
- add_conditional_directed_dependency(resource, res)
295
- generate_additional_resources(res)
296
- rescue Puppet::Resource::Catalog::DuplicateResourceError
297
- res.info "Duplicate generated resource; skipping"
298
- end
299
- end
300
- end
301
-
302
278
  # Should we ignore tags?
303
279
  def ignore_tags?
304
280
  ! @catalog.host_config?
@@ -340,15 +340,15 @@ module Puppet
340
340
  other object; it is useful for triggering an action:
341
341
 
342
342
  # Pull down the main aliases file
343
- file { "/etc/aliases":
344
- source => "puppet://server/module/aliases"
343
+ file { '/etc/aliases':
344
+ source => 'puppet://server/module/aliases',
345
345
  }
346
346
 
347
347
  # Rebuild the database, but only when the file changes
348
348
  exec { newaliases:
349
- path => ["/usr/bin", "/usr/sbin"],
350
- subscribe => File["/etc/aliases"],
351
- refreshonly => true
349
+ path => ['/usr/bin', '/usr/sbin'],
350
+ subscribe => File['/etc/aliases'],
351
+ refreshonly => true,
352
352
  }
353
353
 
354
354
  Note that only `subscribe` and `notify` can trigger actions, not `require`,
@@ -377,10 +377,10 @@ module Puppet
377
377
  This parameter doesn't cause Puppet to create a file; it is only
378
378
  useful if **the command itself** creates a file.
379
379
 
380
- exec { "tar -xf /Volumes/nfs02/important.tar":
381
- cwd => "/var/tmp",
382
- creates => "/var/tmp/myfile",
383
- path => ["/usr/bin", "/usr/sbin"]
380
+ exec { 'tar -xf /Volumes/nfs02/important.tar':
381
+ cwd => '/var/tmp',
382
+ creates => '/var/tmp/myfile',
383
+ path => ['/usr/bin', '/usr/sbin',],
384
384
  }
385
385
 
386
386
  In this example, `myfile` is assumed to be a file inside
@@ -404,9 +404,9 @@ module Puppet
404
404
  If this parameter is set, then this `exec` will run unless
405
405
  the command has an exit code of 0. For example:
406
406
 
407
- exec { "/bin/echo root >> /usr/lib/cron/cron.allow":
408
- path => "/usr/bin:/usr/sbin:/bin",
409
- unless => "grep root /usr/lib/cron/cron.allow 2>/dev/null"
407
+ exec { '/bin/echo root >> /usr/lib/cron/cron.allow':
408
+ path => '/usr/bin:/usr/sbin:/bin',
409
+ unless => 'grep root /usr/lib/cron/cron.allow 2>/dev/null',
410
410
  }
411
411
 
412
412
  This would add `root` to the cron.allow file (on Solaris) unless
@@ -420,7 +420,7 @@ module Puppet
420
420
 
421
421
  Also note that unless can take an array as its value, e.g.:
422
422
 
423
- unless => ["test -f /tmp/file1", "test -f /tmp/file2"]
423
+ unless => ['test -f /tmp/file1', 'test -f /tmp/file2'],
424
424
 
425
425
  This will only run the exec if _all_ conditions in the array return false.
426
426
  EOT
@@ -455,9 +455,9 @@ module Puppet
455
455
  If this parameter is set, then this `exec` will only run if
456
456
  the command has an exit code of 0. For example:
457
457
 
458
- exec { "logrotate":
459
- path => "/usr/bin:/usr/sbin:/bin",
460
- onlyif => "test `du /var/log/messages | cut -f1` -gt 100000"
458
+ exec { 'logrotate':
459
+ path => '/usr/bin:/usr/sbin:/bin',
460
+ onlyif => 'test `du /var/log/messages | cut -f1` -gt 100000',
461
461
  }
462
462
 
463
463
  This would run `logrotate` only if that test returned true.
@@ -471,7 +471,7 @@ module Puppet
471
471
 
472
472
  Also note that onlyif can take an array as its value, e.g.:
473
473
 
474
- onlyif => ["test -f /tmp/file1", "test -f /tmp/file2"]
474
+ onlyif => ['test -f /tmp/file1', 'test -f /tmp/file2'],
475
475
 
476
476
  This will only run the exec if _all_ conditions in the array return true.
477
477
  EOT
@@ -23,20 +23,20 @@ module Puppet
23
23
  the manifest...
24
24
 
25
25
  define resolve(nameserver1, nameserver2, domain, search) {
26
- $str = "search $search
27
- domain $domain
28
- nameserver $nameserver1
29
- nameserver $nameserver2
26
+ $str = "search ${search}
27
+ domain ${domain}
28
+ nameserver ${nameserver1}
29
+ nameserver ${nameserver2}
30
30
  "
31
31
 
32
- file { "/etc/resolv.conf":
33
- content => "$str",
32
+ file { '/etc/resolv.conf':
33
+ content => $str,
34
34
  }
35
35
  }
36
36
 
37
37
  ...but for larger files, this attribute is more useful when combined with the
38
- [template](https://docs.puppetlabs.com/references/latest/function.html#template)
39
- or [file](https://docs.puppetlabs.com/references/latest/function.html#file)
38
+ [template](https://docs.puppetlabs.com/puppet/latest/reference/function.html#template)
39
+ or [file](https://docs.puppetlabs.com/puppet/latest/reference/function.html#file)
40
40
  function.
41
41
  EOT
42
42
 
@@ -36,13 +36,13 @@ module Puppet
36
36
 
37
37
  # Equivalent resources:
38
38
 
39
- file { "/etc/inetd.conf":
40
- ensure => "/etc/inet/inetd.conf",
39
+ file { '/etc/inetd.conf':
40
+ ensure => '/etc/inet/inetd.conf',
41
41
  }
42
42
 
43
- file { "/etc/inetd.conf":
43
+ file { '/etc/inetd.conf':
44
44
  ensure => link,
45
- target => "/etc/inet/inetd.conf",
45
+ target => '/etc/inet/inetd.conf',
46
46
  }
47
47
 
48
48
  However, we recommend using `link` and `target` explicitly, since this
@@ -52,11 +52,11 @@ module Puppet
52
52
  use the first source that exists. This can be used to serve different
53
53
  files to different system types:
54
54
 
55
- file { "/etc/nfs.conf":
55
+ file { '/etc/nfs.conf':
56
56
  source => [
57
- "puppet:///modules/nfs/conf.$host",
58
- "puppet:///modules/nfs/conf.$operatingsystem",
59
- "puppet:///modules/nfs/conf"
57
+ "puppet:///modules/nfs/conf.${host}",
58
+ "puppet:///modules/nfs/conf.${operatingsystem}",
59
+ 'puppet:///modules/nfs/conf'
60
60
  ]
61
61
  }
62
62
 
@@ -7,9 +7,9 @@ module Puppet
7
7
  Symlink targets can be relative, as well as absolute:
8
8
 
9
9
  # (Useful on Solaris)
10
- file { \"/etc/inetd.conf\":
10
+ file { '/etc/inetd.conf':
11
11
  ensure => link,
12
- target => \"inet/inetd.conf\",
12
+ target => 'inet/inetd.conf',
13
13
  }
14
14
 
15
15
  Directories of symlinks can be served recursively by instead using the
@@ -236,11 +236,9 @@ Puppet::Type.newtype(:file) do
236
236
 
237
237
  newparam(:links) do
238
238
  desc "How to handle links during file actions. During file copying,
239
- `follow` will copy the target file instead of the link, `manage`
240
- will copy the link itself, and `ignore` will just pass it by.
241
- When not copying, `manage` and `ignore` behave equivalently
242
- (because you cannot really ignore links entirely during local
243
- recursion), and `follow` will manage the file to which the link points."
239
+ `follow` will copy the target file instead of the link and `manage`
240
+ will copy the link itself. When not copying, `manage` will manage
241
+ the link, and `follow` will manage the file to which the link points."
244
242
 
245
243
  newvalues(:follow, :manage)
246
244
 
@@ -856,6 +854,18 @@ Puppet::Type.newtype(:file) do
856
854
  devfail 'a property should have been provided if write_temporary_file? returned true' if property.nil?
857
855
  content_checksum = property.write(file)
858
856
  file.flush
857
+ begin
858
+ file.fsync
859
+ rescue NotImplementedError
860
+ # fsync may not be implemented by Ruby on all platforms, but
861
+ # there is absolutely no recovery path if we detect that. So, we just
862
+ # ignore the return code.
863
+ #
864
+ # However, don't be fooled: that is accepting that we are running in
865
+ # an unsafe fashion. If you are porting to a new platform don't stub
866
+ # that out.
867
+ end
868
+
859
869
  fail_if_checksum_is_wrong(file.path, content_checksum) if validate_checksum?
860
870
  if self[:validate_cmd]
861
871
  output = Puppet::Util::Execution.execute(self[:validate_cmd].gsub(self[:validate_replacement], file.path), :failonfail => true, :combine => true)
@@ -21,7 +21,7 @@ module Puppet
21
21
  puppet master's filebucket with the _desired_ content for each file,
22
22
  then instructs the agent to retrieve the content for a specific
23
23
  checksum. For more details,
24
- [see the `static_compiler` section in the catalog indirection docs](https://docs.puppetlabs.com/references/latest/indirection.html#catalog).
24
+ [see the `static_compiler` section in the catalog indirection docs](https://docs.puppetlabs.com/puppet/latest/reference/indirection.html#catalog).
25
25
 
26
26
  To use a central filebucket for backups, you will usually want to declare
27
27
  a filebucket resource and a resource default for the `backup` attribute
@@ -14,7 +14,11 @@ module Puppet
14
14
 
15
15
  **Autorequires:** If Puppet is managing any parents of a mount resource ---
16
16
  that is, other mount points higher up in the filesystem --- the child
17
- mount will autorequire them."
17
+ mount will autorequire them. If Puppet is managing the file path of a
18
+ mount point, the mount resource will autorequire it.
19
+
20
+ **Autobefores:** If Puppet is managing any child file paths of a mount
21
+ point, the mount resource will autobefore them."
18
22
 
19
23
  feature :refreshable, "The provider can remount the filesystem.",
20
24
  :methods => [:remount]
@@ -293,5 +297,18 @@ module Puppet
293
297
  dependencies[0..-2]
294
298
  end
295
299
 
300
+ # Autorequire the mount point's file resource
301
+ autorequire(:file) { Pathname.new(self[:name]) }
302
+
303
+ # Autobefore the mount point's child file paths
304
+ autobefore(:file) do
305
+ dependencies = []
306
+ file_resources = catalog.resources.select { |resource| resource.type == :file }
307
+ children_file_resources = file_resources.select { |resource| File.expand_path(resource[:path]) =~ %r(#{self[:name]}/.) }
308
+ children_file_resources.each do |child|
309
+ dependencies.push Pathname.new(child[:path])
310
+ end
311
+ dependencies
312
+ end
296
313
  end
297
314
  end
@@ -238,8 +238,8 @@ module Puppet
238
238
  }
239
239
 
240
240
  package { 'openssl':
241
+ ensure => installed,
241
242
  name => $ssl,
242
- ensure => installed
243
243
  }
244
244
 
245
245
  . etc. .
@@ -250,9 +250,9 @@ module Puppet
250
250
  }
251
251
 
252
252
  package { 'openssh':
253
- name => $ssh
254
253
  ensure => installed,
255
- require => Package['openssl']
254
+ name => $ssh,
255
+ require => Package['openssl'],
256
256
  }
257
257
 
258
258
  "
@@ -2,7 +2,7 @@ module Puppet
2
2
  Type.newtype(:schedule) do
3
3
  @doc = <<-'EOT'
4
4
  Define schedules for Puppet. Resources can be limited to a schedule by using the
5
- [`schedule`](https://docs.puppetlabs.com/references/latest/metaparameter.html#schedule)
5
+ [`schedule`](https://docs.puppetlabs.com/puppet/latest/reference/metaparameter.html#schedule)
6
6
  metaparameter.
7
7
 
8
8
  Currently, **schedules can only be used to stop a resource from being
@@ -24,7 +24,7 @@ module Puppet
24
24
  the hours of two and 4 AM, then you would use this schedule:
25
25
 
26
26
  schedule { 'maint':
27
- range => "2 - 4",
27
+ range => '2 - 4',
28
28
  period => daily,
29
29
  repeat => 1,
30
30
  }
@@ -57,10 +57,10 @@ module Puppet
57
57
 
58
58
  schedule { 'everyday':
59
59
  period => daily,
60
- range => "2 - 4",
60
+ range => '2 - 4',
61
61
  }
62
62
 
63
- exec { "/usr/bin/apt-get update":
63
+ exec { '/usr/bin/apt-get update':
64
64
  schedule => 'everyday',
65
65
  }
66
66
 
@@ -77,7 +77,7 @@ module Puppet
77
77
  separator. For instance:
78
78
 
79
79
  schedule { 'maintenance':
80
- range => "1:30 - 4:30",
80
+ range => '1:30 - 4:30',
81
81
  }
82
82
 
83
83
  This is mostly useful for restricting certain resources to being
@@ -73,6 +73,17 @@ module Puppet
73
73
  provider.enabled?
74
74
  end
75
75
 
76
+ # This only makes sense on systemd systems. Static services cannot be enabled
77
+ # or disabled manually.
78
+ def insync?(current)
79
+ if provider.respond_to?(:cached_enabled?) && provider.cached_enabled? == 'static'
80
+ Puppet.debug("Unable to enable or disable static service #{@resource[:name]}")
81
+ return true
82
+ end
83
+
84
+ super(current)
85
+ end
86
+
76
87
  validate do |value|
77
88
  if value == :manual and !Puppet.features.microsoft_windows?
78
89
  raise Puppet::Error.new("Setting enable to manual is only supported on Microsoft Windows.")
@@ -239,5 +250,9 @@ module Puppet
239
250
  debug "Skipping restart; service is not running"
240
251
  end
241
252
  end
253
+
254
+ def self.needs_ensure_retrieved
255
+ false
256
+ end
242
257
  end
243
258
  end
@@ -1,8 +1,10 @@
1
1
  module Puppet
2
2
  Type.newtype(:sshkey) do
3
- @doc = "Installs and manages ssh host keys. At this point, this type
4
- only knows how to install keys into `/etc/ssh/ssh_known_hosts`. See
5
- the `ssh_authorized_key` type to manage authorized keys."
3
+ @doc = "Installs and manages ssh host keys. By default, this type will
4
+ install keys into `/etc/ssh/ssh_known_hosts`. To manage ssh keys in a
5
+ different `known_hosts` file, such as a user's personal `known_hosts`,
6
+ pass its path to the `target` parameter. See the `ssh_authorized_key`
7
+ type to manage authorized keys."
6
8
 
7
9
  ensurable
8
10
 
@@ -2,7 +2,7 @@ Puppet::Type.newtype(:stage) do
2
2
  desc "A resource type for creating new run stages. Once a stage is available,
3
3
  classes can be assigned to it by declaring them with the resource-like syntax
4
4
  and using
5
- [the `stage` metaparameter](https://docs.puppetlabs.com/references/latest/metaparameter.html#stage).
5
+ [the `stage` metaparameter](https://docs.puppetlabs.com/puppet/latest/reference/metaparameter.html#stage).
6
6
 
7
7
  Note that new stages are not useful unless you also declare their order
8
8
  in relation to the default `main` stage.
@@ -56,10 +56,10 @@ Puppet::Type.newtype(:tidy) do
56
56
 
57
57
  Example:
58
58
 
59
- tidy { "/tmp":
60
- age => "1w",
59
+ tidy { '/tmp':
60
+ age => '1w',
61
61
  recurse => 1,
62
- matches => [ "[0-9]pub*.tmp", "*.temp", "tmpfile?" ]
62
+ matches => [ '[0-9]pub*.tmp', '*.temp', 'tmpfile?' ],
63
63
  }
64
64
 
65
65
  This removes files from `/tmp` if they are one week old or older,
@@ -282,11 +282,11 @@ end
282
282
 
283
283
  And then call that:
284
284
 
285
- zone { myzone:
286
- ip => "bge0:192.168.0.23",
287
- sysidcfg => template("site/sysidcfg.erb"),
288
- path => "/opt/zones/myzone",
289
- realhostname => "fully.qualified.domain.name"
285
+ zone { 'myzone':
286
+ ip => 'bge0:192.168.0.23',
287
+ sysidcfg => template('site/sysidcfg.erb'),
288
+ path => '/opt/zones/myzone',
289
+ realhostname => 'fully.qualified.domain.name',
290
290
  }
291
291
 
292
292
  The `sysidcfg` only matters on the first booting of the zone,
data/lib/puppet/type.rb CHANGED
@@ -1044,6 +1044,12 @@ class Type
1044
1044
  insync
1045
1045
  end
1046
1046
 
1047
+ # Says if the ensure property should be retrieved if the resource is ensurable
1048
+ # Defaults to true. Some resource type classes can override it
1049
+ def self.needs_ensure_retrieved
1050
+ true
1051
+ end
1052
+
1047
1053
  # Retrieves the current value of all contained properties.
1048
1054
  # Parameters and meta-parameters are not included in the result.
1049
1055
  # @todo As oposed to all non contained properties? How is this different than any of the other
@@ -1058,7 +1064,7 @@ class Type
1058
1064
  # Provide the name, so we know we'll always refer to a real thing
1059
1065
  result[:name] = self[:name] unless self[:name] == title
1060
1066
 
1061
- if ensure_prop = property(:ensure) or (self.class.validattr?(:ensure) and ensure_prop = newattr(:ensure))
1067
+ if ensure_prop = property(:ensure) or (self.class.needs_ensure_retrieved and self.class.validattr?(:ensure) and ensure_prop = newattr(:ensure))
1062
1068
  result[:ensure] = ensure_state = ensure_prop.retrieve
1063
1069
  else
1064
1070
  ensure_state = nil
@@ -1246,7 +1252,7 @@ class Type
1246
1252
  event _would_ have been sent.
1247
1253
 
1248
1254
  **Important note:**
1249
- [The `noop` setting](https://docs.puppetlabs.com/references/latest/configuration.html#noop)
1255
+ [The `noop` setting](https://docs.puppetlabs.com/puppet/latest/reference/configuration.html#noop)
1250
1256
  allows you to globally enable or disable noop mode, but it will _not_ override
1251
1257
  the `noop` metaparameter on individual resources. That is, the value of the
1252
1258
  global `noop` setting will _only_ affect resources that do not have an explicit
@@ -1266,7 +1272,7 @@ class Type
1266
1272
  The value of this metaparameter must be the `name` of a `schedule`
1267
1273
  resource. This means you must declare a schedule resource, then
1268
1274
  refer to it by name; see
1269
- [the docs for the `schedule` type](https://docs.puppetlabs.com/references/latest/type.html#schedule)
1275
+ [the docs for the `schedule` type](https://docs.puppetlabs.com/puppet/latest/reference/type.html#schedule)
1270
1276
  for more info.
1271
1277
 
1272
1278
  schedule { 'everyday':
@@ -1441,7 +1447,7 @@ class Type
1441
1447
  }
1442
1448
 
1443
1449
  Tags are useful for things like applying a subset of a host's configuration
1444
- with [the `tags` setting](/references/latest/configuration.html#tags)
1450
+ with [the `tags` setting](/puppet/latest/reference/configuration.html#tags)
1445
1451
  (e.g. `puppet agent --test --tags bootstrap`)."
1446
1452
 
1447
1453
  munge do |tags|
@@ -1531,12 +1537,12 @@ class Type
1531
1537
  :event => self.class.events,
1532
1538
  :callback => method
1533
1539
  }
1534
- self.debug("subscribes to #{related_resource.ref}")
1540
+ self.debug { "subscribes to #{related_resource.ref}" }
1535
1541
  else
1536
1542
  # If there's no callback, there's no point in even adding
1537
1543
  # a label.
1538
1544
  subargs = nil
1539
- self.debug("requires #{related_resource.ref}")
1545
+ self.debug { "subscribes to #{related_resource.ref}" }
1540
1546
  end
1541
1547
 
1542
1548
  Puppet::Relationship.new(source, target, subargs)
@@ -1630,7 +1636,7 @@ class Type
1630
1636
  By default, all classes are declared in the `main` stage. To assign a class
1631
1637
  to a different stage, you must:
1632
1638
 
1633
- * Declare the new stage as a [`stage` resource](https://docs.puppetlabs.com/references/latest/type.html#stage).
1639
+ * Declare the new stage as a [`stage` resource](https://docs.puppetlabs.com/puppet/latest/reference/type.html#stage).
1634
1640
  * Declare an order relationship between the new stage and the `main` stage.
1635
1641
  * Use the resource-like syntax to declare the class, and set the `stage`
1636
1642
  metaparameter to the name of the desired stage.
@@ -32,7 +32,7 @@ class Puppet::Util::Feature
32
32
  # configured to always cache
33
33
  if block_given? ||
34
34
  @results[name] ||
35
- (@results.has_key?(name) and Puppet[:always_cache_features])
35
+ (@results.has_key?(name) && (Puppet[:always_cache_features] || !Puppet[:always_retry_plugins]))
36
36
  @results[name]
37
37
  else
38
38
  @results[name] = test(name, options)
@@ -20,6 +20,14 @@ end
20
20
 
21
21
  class Symbol
22
22
  def <=> (other)
23
+ if (other.class != Symbol)
24
+ case Puppet[:strict]
25
+ when :warning
26
+ Puppet.warn_once('deprecation', 'symbol_comparison', 'Comparing Symbols to non-Symbol values is deprecated')
27
+ when :error
28
+ raise ArgumentError.new("Comparing Symbols to non-Symbol values is no longer allowed")
29
+ end
30
+ end
23
31
  self.to_s <=> other.to_s
24
32
  end
25
33
 
@@ -114,15 +122,20 @@ if Puppet::Util::Platform.windows?
114
122
  require 'openssl'
115
123
 
116
124
  class OpenSSL::X509::Store
125
+ @puppet_certs_loaded = false
117
126
  alias __original_set_default_paths set_default_paths
118
127
  def set_default_paths
119
128
  # This can be removed once openssl integrates with windows
120
129
  # cert store, see https://rt.openssl.org/Ticket/Display.html?id=2158
121
- Puppet::Util::Windows::RootCerts.instance.to_a.uniq.each do |x509|
122
- begin
123
- add_cert(x509)
124
- rescue OpenSSL::X509::StoreError => e
125
- warn "Failed to add #{x509.subject.to_s}"
130
+ unless @puppet_certs_loaded
131
+ @puppet_certs_loaded = true
132
+
133
+ Puppet::Util::Windows::RootCerts.instance.to_a.uniq { |cert| cert.to_der }.each do |x509|
134
+ begin
135
+ add_cert(x509)
136
+ rescue OpenSSL::X509::StoreError => e
137
+ warn "Failed to add #{x509.subject.to_s}"
138
+ end
126
139
  end
127
140
  end
128
141
 
@@ -47,7 +47,13 @@ class Puppet::Util::NetworkDevice::Cisco::Device < Puppet::Util::NetworkDevice::
47
47
  end
48
48
 
49
49
  def execute(cmd)
50
- transport.command(cmd)
50
+ transport.command(cmd) do |out|
51
+ if out =~ /^%/mo or out =~ /^Command rejected:/mo
52
+ # strip off the command just sent
53
+ error = out.sub(cmd,'')
54
+ Puppet.err "Error while executing '#{cmd}', device returned: #{error}"
55
+ end
56
+ end
51
57
  end
52
58
 
53
59
  def login
@@ -209,6 +215,12 @@ class Puppet::Util::NetworkDevice::Cisco::Device < Puppet::Util::NetworkDevice::
209
215
  return
210
216
  end
211
217
 
218
+ # Cisco VLANs are supposed to be alphanumeric only
219
+ if should[:description] =~ /[^\w]/
220
+ Puppet.err "Invalid VLAN name '#{should[:description]}' for Cisco device.\nVLAN name must be alphanumeric, no spaces or special characters."
221
+ return
222
+ end
223
+
212
224
  # We're creating or updating an entry
213
225
  execute("conf t")
214
226
  execute("vlan #{id}")
@@ -250,12 +262,10 @@ class Puppet::Util::NetworkDevice::Cisco::Device < Puppet::Util::NetworkDevice::
250
262
  else
251
263
  raise "Unknown switchport encapsulation: #{$1} for #{interface}"
252
264
  end
253
- when /^Access Mode VLAN:\s+(.*) \(\(Inactive\)\)$/
254
- # nothing
255
- when /^Access Mode VLAN:\s+(.*) \(.*\)$/
256
- trunking[:access_vlan] = $1 if trunking[:mode] != :trunk
265
+ when /^Access Mode VLAN:\s+(.*) \((.*)\)$/
266
+ trunking[:access_vlan] = $1 if $2 != '(Inactive)'
257
267
  when /^Trunking Native Mode VLAN:\s+(.*) \(.*\)$/
258
- trunking[:native_vlan] = $1 if trunking[:mode] != :access
268
+ trunking[:native_vlan] = $1
259
269
  when /^Trunking VLANs Enabled:\s+(.*)$/
260
270
  next if trunking[:mode] == :access
261
271
  vlans = $1
@@ -45,11 +45,6 @@ class Puppet::Util::NetworkDevice::Cisco::Interface
45
45
  should[:access_vlan] = should[:native_vlan]
46
46
  end
47
47
 
48
- # Don't change non-operational mode parameters
49
- next if property == :access_vlan and should[:mode] == :trunk
50
- next if property == :native_vlan and should[:mode] == :access
51
- next if property == :encapsulation and should[:mode] == :access
52
-
53
48
  Puppet.debug("comparing #{property}: #{is[property]} == #{should[property]}")
54
49
 
55
50
  # They're equal, so do nothing.
@@ -89,7 +84,11 @@ class Puppet::Util::NetworkDevice::Cisco::Interface
89
84
 
90
85
  def command(command)
91
86
  transport.command(command) do |out|
92
- Puppet.err "Error while executing #{command}, device returned #{out}" if out =~ /^%/mo
87
+ if out =~ /^%/mo or out =~ /^Command rejected:/mo
88
+ # strip off the command just sent
89
+ error = out.sub(command,'')
90
+ Puppet.err "Error while executing '#{command}', device returned: #{error}"
91
+ end
93
92
  end
94
93
  end
95
94
  end
@@ -115,16 +115,16 @@ module Puppet::Util::Plist
115
115
  begin
116
116
  plist_to_save = CFPropertyList::List.new
117
117
  plist_to_save.value = CFPropertyList.guess(plist)
118
- plist_to_save.save(file_path, to_format(format))
118
+ plist_to_save.save(file_path, to_format(format), :formatted => true)
119
119
  rescue IOError => e
120
- Puppet.error("Unable to write the file #{file_path}. #{e.inspect}")
120
+ Puppet.err("Unable to write the file #{file_path}. #{e.inspect}")
121
121
  end
122
122
  end
123
123
 
124
124
  def dump_plist(plist_data, format = :xml)
125
125
  plist_to_save = CFPropertyList::List.new
126
126
  plist_to_save.value = CFPropertyList.guess(plist_data)
127
- plist_to_save.to_str(to_format(format))
127
+ plist_to_save.to_str(to_format(format), :formatted => true)
128
128
  end
129
129
  end
130
130
  end