puppet 4.5.3-x86-mingw32 → 4.6.1-x86-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 (422) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +10 -1
  3. data/ext/debian/control +2 -4
  4. data/ext/project_data.yaml +4 -4
  5. data/install.rb +6 -2
  6. data/lib/puppet.rb +3 -1
  7. data/lib/puppet/agent/locker.rb +1 -1
  8. data/lib/puppet/application.rb +6 -4
  9. data/lib/puppet/application/agent.rb +2 -1
  10. data/lib/puppet/application/cert.rb +35 -2
  11. data/lib/puppet/application/device.rb +1 -1
  12. data/lib/puppet/application/generate.rb +5 -0
  13. data/lib/puppet/application/lookup.rb +3 -3
  14. data/lib/puppet/application_support.rb +1 -1
  15. data/lib/puppet/compilable_resource_type.rb +15 -0
  16. data/lib/puppet/configurer.rb +67 -10
  17. data/lib/puppet/configurer/plugin_handler.rb +2 -4
  18. data/lib/puppet/data_providers/hiera_config.rb +1 -1
  19. data/lib/puppet/defaults.rb +34 -7
  20. data/lib/puppet/environments.rb +4 -2
  21. data/lib/puppet/error.rb +1 -1
  22. data/lib/puppet/external/dot.rb +1 -1
  23. data/lib/puppet/face/ca.rb +4 -1
  24. data/lib/puppet/face/certificate.rb +7 -1
  25. data/lib/puppet/face/epp.rb +5 -5
  26. data/lib/puppet/face/generate.rb +64 -0
  27. data/lib/puppet/face/help.rb +19 -13
  28. data/lib/puppet/face/man.rb +1 -1
  29. data/lib/puppet/feature/external_facts.rb +1 -1
  30. data/lib/puppet/file_system.rb +16 -0
  31. data/lib/puppet/file_system/file_impl.rb +5 -0
  32. data/lib/puppet/file_system/memory_impl.rb +4 -0
  33. data/lib/puppet/file_system/path_pattern.rb +1 -0
  34. data/lib/puppet/file_system/windows.rb +19 -0
  35. data/lib/puppet/functions.rb +3 -5
  36. data/lib/puppet/functions/assert_type.rb +1 -1
  37. data/lib/puppet/functions/defined.rb +7 -5
  38. data/lib/puppet/functions/dig.rb +2 -18
  39. data/lib/puppet/functions/hiera.rb +1 -1
  40. data/lib/puppet/functions/lest.rb +1 -37
  41. data/lib/puppet/functions/new.rb +2 -473
  42. data/lib/puppet/functions/reverse_each.rb +2 -59
  43. data/lib/puppet/functions/scanf.rb +4 -4
  44. data/lib/puppet/functions/step.rb +1 -63
  45. data/lib/puppet/functions/then.rb +1 -61
  46. data/lib/puppet/functions/type.rb +1 -40
  47. data/lib/puppet/functions/unwrap.rb +40 -0
  48. data/lib/puppet/generate/models/type/property.rb +70 -0
  49. data/lib/puppet/generate/models/type/type.rb +57 -0
  50. data/lib/puppet/generate/templates/type/pcore.erb +41 -0
  51. data/lib/puppet/generate/type.rb +239 -0
  52. data/lib/puppet/graph/simple_graph.rb +2 -6
  53. data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
  54. data/lib/puppet/indirector/facts/facter.rb +1 -1
  55. data/lib/puppet/indirector/key/ca.rb +2 -2
  56. data/lib/puppet/indirector/request.rb +25 -4
  57. data/lib/puppet/indirector/rest.rb +73 -3
  58. data/lib/puppet/info_service/class_information_service.rb +1 -2
  59. data/lib/puppet/interface/documentation.rb +1 -1
  60. data/lib/puppet/loaders.rb +2 -0
  61. data/lib/puppet/metatype/manager.rb +6 -6
  62. data/lib/puppet/module.rb +8 -1
  63. data/lib/puppet/module_tool.rb +2 -2
  64. data/lib/puppet/module_tool/checksums.rb +1 -1
  65. data/lib/puppet/module_tool/errors/installer.rb +2 -2
  66. data/lib/puppet/module_tool/metadata.rb +1 -1
  67. data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
  68. data/lib/puppet/network/http/rack/rest.rb +15 -1
  69. data/lib/puppet/network/rights.rb +1 -11
  70. data/lib/puppet/node/environment.rb +7 -3
  71. data/lib/puppet/node/facts.rb +1 -1
  72. data/lib/puppet/parameter.rb +23 -3
  73. data/lib/puppet/parameter/boolean.rb +1 -1
  74. data/lib/puppet/parameter/value.rb +1 -1
  75. data/lib/puppet/parser.rb +0 -1
  76. data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
  77. data/lib/puppet/parser/ast/resource.rb +5 -0
  78. data/lib/puppet/parser/ast/resource_instance.rb +5 -1
  79. data/lib/puppet/parser/ast/resourceparam.rb +5 -0
  80. data/lib/puppet/parser/compiler.rb +14 -17
  81. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
  82. data/lib/puppet/parser/environment_compiler.rb +10 -0
  83. data/lib/puppet/parser/functions/create_resources.rb +39 -24
  84. data/lib/puppet/parser/functions/defined.rb +2 -26
  85. data/lib/puppet/parser/functions/dig.rb +29 -0
  86. data/lib/puppet/parser/functions/lest.rb +49 -0
  87. data/lib/puppet/parser/functions/new.rb +530 -0
  88. data/lib/puppet/parser/functions/require.rb +1 -1
  89. data/lib/puppet/parser/functions/reverse_each.rb +83 -0
  90. data/lib/puppet/parser/functions/scanf.rb +4 -4
  91. data/lib/puppet/parser/functions/step.rb +84 -0
  92. data/lib/puppet/parser/functions/then.rb +73 -0
  93. data/lib/puppet/parser/functions/type.rb +53 -0
  94. data/lib/puppet/parser/resource.rb +16 -7
  95. data/lib/puppet/parser/scope.rb +36 -28
  96. data/lib/puppet/parser/type_loader.rb +1 -1
  97. data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
  98. data/lib/puppet/pops.rb +13 -0
  99. data/lib/puppet/pops/adapters.rb +49 -49
  100. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
  101. data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
  102. data/lib/puppet/pops/evaluator/closure.rb +39 -13
  103. data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
  104. data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
  105. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  106. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
  107. data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
  108. data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
  109. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
  110. data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
  111. data/lib/puppet/pops/functions/function.rb +5 -0
  112. data/lib/puppet/pops/issues.rb +1 -1
  113. data/lib/puppet/pops/label_provider.rb +2 -2
  114. data/lib/puppet/pops/loader/base_loader.rb +12 -15
  115. data/lib/puppet/pops/loader/loader.rb +15 -50
  116. data/lib/puppet/pops/loader/loader_paths.rb +28 -2
  117. data/lib/puppet/pops/loader/module_loaders.rb +16 -1
  118. data/lib/puppet/pops/loader/null_loader.rb +17 -1
  119. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
  120. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
  121. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
  122. data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
  123. data/lib/puppet/pops/loader/static_loader.rb +55 -0
  124. data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
  125. data/lib/puppet/pops/loader/typed_name.rb +50 -0
  126. data/lib/puppet/pops/loaders.rb +64 -19
  127. data/lib/puppet/pops/merge_strategy.rb +7 -7
  128. data/lib/puppet/pops/migration/migration_checker.rb +4 -0
  129. data/lib/puppet/pops/model/model_label_provider.rb +2 -0
  130. data/lib/puppet/pops/parser/egrammar.ra +8 -5
  131. data/lib/puppet/pops/parser/eparser.rb +1550 -1498
  132. data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
  133. data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
  134. data/lib/puppet/pops/parser/lexer2.rb +14 -1
  135. data/lib/puppet/pops/parser/locator.rb +30 -1
  136. data/lib/puppet/pops/parser/parser_support.rb +0 -3
  137. data/lib/puppet/pops/parser/slurp_support.rb +3 -3
  138. data/lib/puppet/pops/patterns.rb +9 -1
  139. data/lib/puppet/pops/pcore.rb +67 -11
  140. data/lib/puppet/pops/puppet_stack.rb +43 -0
  141. data/lib/puppet/pops/resource/param.rb +51 -0
  142. data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
  143. data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
  144. data/lib/puppet/pops/serialization.rb +17 -0
  145. data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
  146. data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
  147. data/lib/puppet/pops/serialization/deserializer.rb +60 -0
  148. data/lib/puppet/pops/serialization/extension.rb +126 -0
  149. data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  150. data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  151. data/lib/puppet/pops/serialization/json.rb +247 -0
  152. data/lib/puppet/pops/serialization/object.rb +63 -0
  153. data/lib/puppet/pops/serialization/rgen.rb +151 -0
  154. data/lib/puppet/pops/serialization/serializer.rb +91 -0
  155. data/lib/puppet/pops/serialization/time_factory.rb +66 -0
  156. data/lib/puppet/pops/types/annotatable.rb +36 -0
  157. data/lib/puppet/pops/types/implementation_registry.rb +3 -8
  158. data/lib/puppet/pops/types/p_meta_type.rb +83 -0
  159. data/lib/puppet/pops/types/p_object_type.rb +110 -117
  160. data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
  161. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
  162. data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
  163. data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
  164. data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
  165. data/lib/puppet/pops/types/puppet_object.rb +0 -5
  166. data/lib/puppet/pops/types/ruby_generator.rb +9 -2
  167. data/lib/puppet/pops/types/type_calculator.rb +6 -1
  168. data/lib/puppet/pops/types/type_factory.rb +14 -12
  169. data/lib/puppet/pops/types/type_formatter.rb +78 -33
  170. data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
  171. data/lib/puppet/pops/types/type_parser.rb +27 -2
  172. data/lib/puppet/pops/types/type_set_reference.rb +59 -0
  173. data/lib/puppet/pops/types/types.rb +366 -13
  174. data/lib/puppet/pops/validation.rb +4 -4
  175. data/lib/puppet/pops/validation/checker4_0.rb +5 -2
  176. data/lib/puppet/pops/visitor.rb +2 -2
  177. data/lib/puppet/property.rb +64 -5
  178. data/lib/puppet/provider.rb +1 -1
  179. data/lib/puppet/provider/aixobject.rb +3 -3
  180. data/lib/puppet/provider/group/aix.rb +4 -4
  181. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  182. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  183. data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
  184. data/lib/puppet/provider/mount/parsed.rb +1 -1
  185. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  186. data/lib/puppet/provider/package/appdmg.rb +3 -3
  187. data/lib/puppet/provider/package/apple.rb +1 -1
  188. data/lib/puppet/provider/package/dnf.rb +5 -0
  189. data/lib/puppet/provider/package/nim.rb +1 -1
  190. data/lib/puppet/provider/package/pacman.rb +2 -2
  191. data/lib/puppet/provider/package/pip.rb +5 -3
  192. data/lib/puppet/provider/package/pip3.rb +1 -1
  193. data/lib/puppet/provider/package/pkg.rb +5 -5
  194. data/lib/puppet/provider/package/pkgdmg.rb +4 -4
  195. data/lib/puppet/provider/package/pkgin.rb +1 -1
  196. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  197. data/lib/puppet/provider/package/portage.rb +48 -8
  198. data/lib/puppet/provider/package/sun.rb +1 -1
  199. data/lib/puppet/provider/package/tdnf.rb +28 -0
  200. data/lib/puppet/provider/package/yum.rb +22 -4
  201. data/lib/puppet/provider/parsedfile.rb +2 -2
  202. data/lib/puppet/provider/service/base.rb +1 -1
  203. data/lib/puppet/provider/service/bsd.rb +1 -1
  204. data/lib/puppet/provider/service/daemontools.rb +2 -2
  205. data/lib/puppet/provider/service/debian.rb +3 -3
  206. data/lib/puppet/provider/service/init.rb +5 -3
  207. data/lib/puppet/provider/service/launchd.rb +16 -2
  208. data/lib/puppet/provider/service/runit.rb +1 -1
  209. data/lib/puppet/provider/service/smf.rb +8 -1
  210. data/lib/puppet/provider/service/systemd.rb +39 -6
  211. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  212. data/lib/puppet/provider/user/aix.rb +3 -2
  213. data/lib/puppet/provider/user/directoryservice.rb +4 -3
  214. data/lib/puppet/provider/user/hpux.rb +1 -1
  215. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  216. data/lib/puppet/provider/user/windows_adsi.rb +3 -0
  217. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  218. data/lib/puppet/reference/type.rb +1 -1
  219. data/lib/puppet/resource.rb +33 -7
  220. data/lib/puppet/resource/capability_finder.rb +74 -54
  221. data/lib/puppet/resource/status.rb +11 -2
  222. data/lib/puppet/settings.rb +17 -6
  223. data/lib/puppet/settings/environment_conf.rb +1 -1
  224. data/lib/puppet/settings/server_list_setting.rb +20 -0
  225. data/lib/puppet/ssl/certificate_authority.rb +32 -9
  226. data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
  227. data/lib/puppet/ssl/host.rb +3 -3
  228. data/lib/puppet/ssl/oids.rb +10 -0
  229. data/lib/puppet/ssl/validator/default_validator.rb +2 -2
  230. data/lib/puppet/test/test_helper.rb +2 -2
  231. data/lib/puppet/transaction.rb +12 -0
  232. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  233. data/lib/puppet/transaction/event.rb +29 -2
  234. data/lib/puppet/transaction/event_manager.rb +1 -1
  235. data/lib/puppet/transaction/persistence.rb +84 -0
  236. data/lib/puppet/transaction/report.rb +49 -2
  237. data/lib/puppet/transaction/resource_harness.rb +98 -18
  238. data/lib/puppet/type.rb +63 -21
  239. data/lib/puppet/type/augeas.rb +3 -3
  240. data/lib/puppet/type/cron.rb +1 -1
  241. data/lib/puppet/type/file.rb +39 -2
  242. data/lib/puppet/type/file/data_sync.rb +13 -5
  243. data/lib/puppet/type/host.rb +1 -1
  244. data/lib/puppet/type/mount.rb +2 -6
  245. data/lib/puppet/type/notify.rb +1 -1
  246. data/lib/puppet/type/package.rb +1 -1
  247. data/lib/puppet/type/resources.rb +1 -1
  248. data/lib/puppet/type/scheduled_task.rb +1 -1
  249. data/lib/puppet/type/ssh_authorized_key.rb +2 -2
  250. data/lib/puppet/type/tidy.rb +1 -1
  251. data/lib/puppet/type/yumrepo.rb +3 -3
  252. data/lib/puppet/type/zone.rb +1 -1
  253. data/lib/puppet/util.rb +2 -2
  254. data/lib/puppet/util/classgen.rb +1 -1
  255. data/lib/puppet/util/command_line.rb +6 -2
  256. data/lib/puppet/util/command_line/trollop.rb +1 -1
  257. data/lib/puppet/util/execution.rb +2 -2
  258. data/lib/puppet/util/http_proxy.rb +1 -1
  259. data/lib/puppet/util/inifile.rb +1 -1
  260. data/lib/puppet/util/instance_loader.rb +1 -1
  261. data/lib/puppet/util/logging.rb +1 -1
  262. data/lib/puppet/util/multi_match.rb +1 -1
  263. data/lib/puppet/util/plist.rb +15 -5
  264. data/lib/puppet/util/profiler.rb +1 -1
  265. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  266. data/lib/puppet/util/psych_support.rb +1 -1
  267. data/lib/puppet/util/rdoc.rb +2 -2
  268. data/lib/puppet/util/rubygems.rb +1 -1
  269. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
  270. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  271. data/lib/puppet/util/windows/adsi.rb +30 -8
  272. data/lib/puppet/util/windows/api_types.rb +1 -1
  273. data/lib/puppet/util/windows/file.rb +59 -0
  274. data/lib/puppet/util/windows/process.rb +10 -0
  275. data/lib/puppet/util/windows/security.rb +1 -1
  276. data/lib/puppet/util/windows/user.rb +22 -4
  277. data/lib/puppet/util/yaml.rb +15 -3
  278. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
  279. data/lib/puppet/vendor/rgen_patch.rb +1 -1
  280. data/lib/puppet/version.rb +2 -2
  281. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
  282. data/spec/integration/agent/logging_spec.rb +15 -14
  283. data/spec/integration/application/apply_spec.rb +1 -0
  284. data/spec/integration/directory_environments_spec.rb +16 -0
  285. data/spec/integration/environments/settings_spec.rb +32 -4
  286. data/spec/integration/faces/documentation_spec.rb +1 -1
  287. data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
  288. data/spec/integration/node/environment_spec.rb +21 -0
  289. data/spec/integration/parser/collection_spec.rb +10 -0
  290. data/spec/integration/parser/compiler_spec.rb +76 -840
  291. data/spec/integration/parser/functions/require_spec.rb +3 -3
  292. data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
  293. data/spec/integration/parser/pcore_resource_spec.rb +208 -0
  294. data/spec/integration/parser/resource_expressions_spec.rb +4 -2
  295. data/spec/integration/provider/yumrepo_spec.rb +4 -1
  296. data/spec/integration/transaction/report_spec.rb +666 -0
  297. data/spec/integration/type/file_spec.rb +11 -12
  298. data/spec/integration/util/windows/adsi_spec.rb +99 -0
  299. data/spec/integration/util/windows/principal_spec.rb +109 -60
  300. data/spec/integration/util/windows/process_spec.rb +4 -2
  301. data/spec/integration/util/windows/security_spec.rb +34 -8
  302. data/spec/integration/util/windows/user_spec.rb +26 -4
  303. data/spec/lib/puppet_spec/files.rb +2 -2
  304. data/spec/lib/puppet_spec/network.rb +12 -8
  305. data/spec/shared_examples/rhel_package_provider.rb +341 -0
  306. data/spec/spec_helper.rb +8 -2
  307. data/spec/unit/application/cert_spec.rb +20 -0
  308. data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
  309. data/spec/unit/configurer_spec.rb +46 -0
  310. data/spec/unit/defaults_spec.rb +14 -0
  311. data/spec/unit/face/generate_spec.rb +230 -0
  312. data/spec/unit/face/help_spec.rb +53 -0
  313. data/spec/unit/face/parser_spec.rb +6 -0
  314. data/spec/unit/face/plugin_spec.rb +0 -4
  315. data/spec/unit/file_system_spec.rb +85 -0
  316. data/spec/unit/functions/lookup_spec.rb +4 -4
  317. data/spec/unit/functions/match_spec.rb +2 -2
  318. data/spec/unit/functions/regsubst_spec.rb +1 -1
  319. data/spec/unit/functions/split_spec.rb +1 -1
  320. data/spec/unit/functions/unwrap_spec.rb +29 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +8 -8
  323. data/spec/unit/indirector/facts/facter_spec.rb +1 -9
  324. data/spec/unit/indirector/rest_spec.rb +95 -9
  325. data/spec/unit/module_spec.rb +43 -7
  326. data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
  327. data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
  328. data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
  329. data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
  330. data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
  331. data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
  332. data/spec/unit/network/rights_spec.rb +1 -1
  333. data/spec/unit/parameter_spec.rb +11 -0
  334. data/spec/unit/parser/compiler_spec.rb +19 -33
  335. data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
  336. data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
  337. data/spec/unit/parser/functions/require_spec.rb +2 -2
  338. data/spec/unit/parser/resource_spec.rb +21 -11
  339. data/spec/unit/parser/scope_spec.rb +1 -5
  340. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
  341. data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
  342. data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
  343. data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
  344. data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
  345. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  346. data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
  347. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
  348. data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
  349. data/spec/unit/pops/puppet_stack_spec.rb +79 -0
  350. data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
  351. data/spec/unit/pops/serialization/packer_spec.rb +153 -0
  352. data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
  353. data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
  354. data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
  355. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
  356. data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
  357. data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
  358. data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
  359. data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
  360. data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
  361. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
  362. data/spec/unit/pops/types/type_parser_spec.rb +1 -1
  363. data/spec/unit/pops/types/types_spec.rb +1 -1
  364. data/spec/unit/pops/validator/validator_spec.rb +18 -1
  365. data/spec/unit/property_spec.rb +48 -11
  366. data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
  367. data/spec/unit/provider/package/dnf_spec.rb +1 -99
  368. data/spec/unit/provider/package/pacman_spec.rb +4 -4
  369. data/spec/unit/provider/package/pip_spec.rb +14 -0
  370. data/spec/unit/provider/package/pkg_spec.rb +6 -0
  371. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
  372. data/spec/unit/provider/package/portage_spec.rb +64 -8
  373. data/spec/unit/provider/package/tdnf_spec.rb +18 -0
  374. data/spec/unit/provider/package/windows/package_spec.rb +4 -1
  375. data/spec/unit/provider/package/windows_spec.rb +8 -2
  376. data/spec/unit/provider/package/yum_spec.rb +6 -377
  377. data/spec/unit/provider/service/base_spec.rb +6 -0
  378. data/spec/unit/provider/service/debian_spec.rb +16 -7
  379. data/spec/unit/provider/service/gentoo_spec.rb +6 -0
  380. data/spec/unit/provider/service/init_spec.rb +7 -0
  381. data/spec/unit/provider/service/launchd_spec.rb +35 -4
  382. data/spec/unit/provider/service/openrc_spec.rb +6 -0
  383. data/spec/unit/provider/service/smf_spec.rb +31 -6
  384. data/spec/unit/provider/service/src_spec.rb +6 -0
  385. data/spec/unit/provider/service/systemd_spec.rb +70 -20
  386. data/spec/unit/provider/service/upstart_spec.rb +6 -0
  387. data/spec/unit/provider/user/aix_spec.rb +7 -0
  388. data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
  389. data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
  390. data/spec/unit/resource/capability_finder_spec.rb +51 -3
  391. data/spec/unit/resource/catalog_spec.rb +5 -0
  392. data/spec/unit/resource/type_spec.rb +2 -2
  393. data/spec/unit/resource_spec.rb +19 -0
  394. data/spec/unit/settings_spec.rb +13 -0
  395. data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
  396. data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
  397. data/spec/unit/ssl/host_spec.rb +1 -1
  398. data/spec/unit/ssl/oids_spec.rb +24 -21
  399. data/spec/unit/transaction/event_spec.rb +3 -1
  400. data/spec/unit/transaction/persistence_spec.rb +173 -0
  401. data/spec/unit/transaction/report_spec.rb +64 -1
  402. data/spec/unit/transaction/resource_harness_spec.rb +91 -0
  403. data/spec/unit/type/file/content_spec.rb +47 -15
  404. data/spec/unit/type/file_spec.rb +28 -0
  405. data/spec/unit/type/mount_spec.rb +5 -12
  406. data/spec/unit/type/yumrepo_spec.rb +1 -5
  407. data/spec/unit/type_spec.rb +32 -0
  408. data/spec/unit/util/command_line_spec.rb +11 -0
  409. data/spec/unit/util/execution_spec.rb +1 -1
  410. data/spec/unit/util/plist_spec.rb +16 -3
  411. data/spec/unit/util/storage_spec.rb +4 -1
  412. data/spec/unit/util/windows/adsi_spec.rb +23 -2
  413. data/spec/unit/util/windows/file_spec.rb +56 -1
  414. data/spec/unit/util/windows/sid_spec.rb +31 -7
  415. data/spec/unit/util/yaml_spec.rb +12 -0
  416. data/spec/unit/util_spec.rb +87 -20
  417. metadata +91 -48
  418. data/ext/puppetlisten/puppetlisten.rb +0 -77
  419. data/ext/puppetlisten/puppetrun.rb +0 -38
  420. data/lib/puppet/resource/type_collection_helper.rb +0 -7
  421. data/spec/unit/parser/functions/defined_spec.rb +0 -120
  422. data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
@@ -17,7 +17,7 @@ module Validation
17
17
  # validation configuration depending on the context/type of validation that should be performed (static, vs. runtime, etc.).
18
18
  #
19
19
  # This class is abstract and must be subclassed. The subclass must implement the methods
20
- # {#label_provider} and {#checker}. It is also expected that the sublcass will override
20
+ # {#label_provider} and {#checker}. It is also expected that the subclass will override
21
21
  # the severity_producer and configure the issues that should be reported as errors (i.e. if they should be ignored, produce
22
22
  # a warning, or a deprecation warning).
23
23
  #
@@ -384,12 +384,12 @@ module Validation
384
384
  errors? || warnings?
385
385
  end
386
386
 
387
- # Returns the diagnosed errors in the order thwy were reported.
387
+ # Returns the diagnosed errors in the order they were reported.
388
388
  def errors
389
389
  @diagnostics.select {|d| d.severity == :error }
390
390
  end
391
391
 
392
- # Returns the diagnosed warnings in the order thwy were reported.
392
+ # Returns the diagnosed warnings in the order they were reported.
393
393
  # (This includes :warning and :deprecation severity)
394
394
  def warnings
395
395
  @diagnostics.select {|d| d.severity == :warning || d.severity == :deprecation }
@@ -399,7 +399,7 @@ module Validation
399
399
  @diagnostics.select {|d| d.severity != :ignore }
400
400
  end
401
401
 
402
- # Returns the ignored diagnostics in the order thwy were reported (if reported at all)
402
+ # Returns the ignored diagnostics in the order they were reported (if reported at all)
403
403
  def ignored
404
404
  @diagnostics.select {|d| d.severity == :ignore }
405
405
  end
@@ -310,7 +310,7 @@ class Checker4_0 < Evaluator::LiteralEvaluator
310
310
  end
311
311
 
312
312
  # Only used for function names, grammar should not be able to produce something faulty, but
313
- # check anyway if model is created programatically (it will fail in transformation to AST for sure).
313
+ # check anyway if model is created programmatically (it will fail in transformation to AST for sure).
314
314
  def check_NamedAccessExpression(o)
315
315
  name = o.right_expr
316
316
  unless name.is_a? Model::QualifiedName
@@ -349,7 +349,7 @@ class Checker4_0 < Evaluator::LiteralEvaluator
349
349
  # for 'class', 'define', and function
350
350
  def check_NamedDefinition(o)
351
351
  top(o.eContainer, o)
352
- if o.name !~ Patterns::CLASSREF
352
+ if o.name !~ Patterns::CLASSREF_DECL
353
353
  acceptor.accept(Issues::ILLEGAL_DEFINITION_NAME, o, {:name=>o.name})
354
354
  end
355
355
  internal_check_reserved_type_name(o, o.name)
@@ -358,6 +358,9 @@ class Checker4_0 < Evaluator::LiteralEvaluator
358
358
 
359
359
  def check_TypeAlias(o)
360
360
  top(o.eContainer, o)
361
+ if o.name !~ Patterns::CLASSREF_EXT_DECL
362
+ acceptor.accept(Issues::ILLEGAL_DEFINITION_NAME, o, {:name=>o.name})
363
+ end
361
364
  internal_check_reserved_type_name(o, o.name)
362
365
  internal_check_type_ref(o, o.type_expr)
363
366
  end
@@ -1,7 +1,7 @@
1
1
  # A Visitor performs delegation to a given receiver based on the configuration of the Visitor.
2
2
  # A new visitor is created with a given receiver, a method prefix, min, and max argument counts.
3
3
  # e.g.
4
- # vistor = Visitor.new(self, "visit_from", 1, 1)
4
+ # visitor = Visitor.new(self, "visit_from", 1, 1)
5
5
  # will make the visitor call "self.visit_from_CLASS(x)" where CLASS is resolved to the given
6
6
  # objects class, or one of is ancestors, the first class for which there is an implementation of
7
7
  # a method will be selected.
@@ -72,7 +72,7 @@ class Puppet::Pops::Visitor
72
72
  end
73
73
 
74
74
  # Visit an explicit receiver with 2 args
75
- # (This is ~30% faster than calling th general method)
75
+ # (This is ~30% faster than calling the general method)
76
76
  #
77
77
  def visit_this_2(receiver, thing, arg1, arg2)
78
78
  if method_name = @cache[thing.class]
@@ -98,6 +98,22 @@ class Puppet::Property < Puppet::Parameter
98
98
  raise ArgumentError, "Supported values for Property#array_matching are 'first' and 'all'" unless [:first, :all].include?(value)
99
99
  @array_matching = value
100
100
  end
101
+
102
+ # Used to mark a type property as having or lacking idempotency (on purpose
103
+ # generally). This is used to avoid marking the property as a
104
+ # corrective_change when there is known idempotency issues with the property
105
+ # rendering a corrective_change flag as useless.
106
+ # @return [Boolean] true if the property is marked as idempotent
107
+ def idempotent
108
+ @idempotent.nil? ? @idempotent = true : @idempotent
109
+ end
110
+
111
+ # Attribute setter for the idempotent attribute.
112
+ # @param [bool] value boolean indicating if the property is idempotent.
113
+ # @see idempotent
114
+ def idempotent=(value)
115
+ @idempotent = value
116
+ end
101
117
  end
102
118
 
103
119
  # Looks up a value's name among valid values, to enable option lookup with result as a key.
@@ -228,18 +244,20 @@ class Puppet::Property < Puppet::Parameter
228
244
  # * `:name` - the event_name
229
245
  # * `:desired_value` - a.k.a _should_ or _wanted value_
230
246
  # * `:property` - reference to this property
231
- # * `:source_description` - the _path_ (?? See todo)
247
+ # * `:source_description` - The containment path of this property, indicating what resource this
248
+ # property is associated with and in what stage and class that resource
249
+ # was declared, e.g. "/Stage[main]/Myclass/File[/tmp/example]/ensure"
232
250
  # * `:invalidate_refreshes` - if scheduled refreshes should be invalidated
251
+ # * `:redacted` - if the event will be redacted (due to this property being sensitive)
233
252
  #
234
- # @todo What is the intent of this method? What is the meaning of the :source_description passed in the
235
- # options to the created event?
236
253
  # @return [Puppet::Transaction::Event] the created event
237
254
  # @see Puppet::Type#event
238
- def event
239
- attrs = { :name => event_name, :desired_value => should, :property => self, :source_description => path }
255
+ def event(options = {})
256
+ attrs = { :name => event_name, :desired_value => should, :property => self, :source_description => path }.merge(options)
240
257
  if should and value = self.class.value_collection.match?(should)
241
258
  attrs[:invalidate_refreshes] = true if value.invalidate_refreshes
242
259
  end
260
+ attrs[:redacted] = @sensitive
243
261
  resource.event attrs
244
262
  end
245
263
 
@@ -324,6 +342,41 @@ class Puppet::Property < Puppet::Parameter
324
342
  end
325
343
  end
326
344
 
345
+ # This method tests if two values are insync? outside of the properties current
346
+ # should value. This works around the requirement for corrective_change analysis
347
+ # that requires two older values to be compared with the properties potentially
348
+ # custom insync? code.
349
+ #
350
+ # @param [Object] should the value it should be
351
+ # @param [Object] is the value it is
352
+ # @return [Boolean] whether or not the values are in sync or not
353
+ # @api private
354
+ def insync_values?(should, is)
355
+ # Here be dragons. We're setting the should value of a property purely just to
356
+ # call its insync? method, as it lacks a way to pass in a should.
357
+ # Unfortunately there isn't an API compatible way of avoiding this, as both should
358
+ # an insync? behaviours are part of the public API. Future API work should factor
359
+ # this kind of arbitrary comparisons into the API to remove this complexity. -ken
360
+
361
+ # Backup old should, set it to the new value, then call insync? on the property.
362
+ old_should = @should
363
+
364
+ begin
365
+ @should = should
366
+ insync?(is)
367
+ rescue => detail
368
+ # Certain operations may fail, but we don't want to fail the transaction if we can
369
+ # avoid it
370
+ Puppet.log_exception(detail, "Unknown failure comparing values #{should} and #{is} using insync? on type: #{self.resource.ref} property: #{self.name}", { :level => :info })
371
+
372
+ # Return nil, ie. unknown
373
+ nil
374
+ ensure
375
+ # Always restore old should
376
+ @should = old_should
377
+ end
378
+ end
379
+
327
380
  # Checks if the given current and desired values are equal.
328
381
  # This default implementation performs this check in a backwards compatible way where
329
382
  # the equality of the two values is checked, and then the equality of current with desired
@@ -368,6 +421,12 @@ class Puppet::Property < Puppet::Parameter
368
421
  self.class.array_matching == :all
369
422
  end
370
423
 
424
+ # @return [Boolean] whether the property is marked as idempotent for the purposes
425
+ # of calculating corrective change.
426
+ def idempotent?
427
+ self.class.idempotent
428
+ end
429
+
371
430
  # @return [Symbol] the name of the property as stated when the property was created.
372
431
  # @note A property class (just like a parameter class) describes one specific property and
373
432
  # can only be used once within one type's inheritance chain.
@@ -505,7 +505,7 @@ class Puppet::Provider
505
505
  # structure of the provider - this hash holds the current state property values of system entities
506
506
  # as they are being discovered by querying or other operations (typically getters).
507
507
  #
508
- # @todo The use of a hash as a parameter needs a better exaplanation; why is this done? What is the intent?
508
+ # @todo The use of a hash as a parameter needs a better explanation; why is this done? What is the intent?
509
509
  # @param resource [Puppet::Resource, Hash] optional resource or hash
510
510
  #
511
511
  def initialize(resource = nil)
@@ -26,7 +26,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
26
26
  # Valid attributes to be managed by this provider.
27
27
  # It is a list of hashes
28
28
  # :aix_attr AIX command attribute name
29
- # :puppet_prop Puppet propertie name
29
+ # :puppet_prop Puppet property name
30
30
  # :to Optional. Method name that adapts puppet property to aix command value.
31
31
  # :from Optional. Method to adapt aix command line value to puppet property. Optional
32
32
  class << self
@@ -226,7 +226,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
226
226
  begin
227
227
  output = execute(self.lscmd)
228
228
  @objectinfo = self.parse_command_output(output)
229
- # All attributtes without translation
229
+ # All attributes without translation
230
230
  @objectosinfo = self.parse_command_output(output, nil)
231
231
  rescue Puppet::ExecutionFailure => detail
232
232
  # Print error if needed. FIXME: Do not check the user here.
@@ -237,7 +237,7 @@ class Puppet::Provider::AixObject < Puppet::Provider
237
237
  end
238
238
 
239
239
  # Like getinfo, but it will not use the mapping to translate the keys and values.
240
- # It might be usefult to retrieve some raw information.
240
+ # It might be useful to retrieve some raw information.
241
241
  def getosinfo(refresh = false)
242
242
  if @objectosinfo.nil? or refresh == true
243
243
  getinfo(refresh)
@@ -33,7 +33,7 @@ Puppet::Type.type(:group).provide :aix, :parent => Puppet::Provider::AixObject d
33
33
  # Valid attributes to be managed by this provider.
34
34
  # It is a list with of hash
35
35
  # :aix_attr AIX command attribute name
36
- # :puppet_prop Puppet propertie name
36
+ # :puppet_prop Puppet property name
37
37
  # :to Method to adapt puppet property to aix command value. Optional.
38
38
  # :from Method to adapt aix command value to puppet property. Optional
39
39
  self.attribute_mapping = [
@@ -94,9 +94,9 @@ Puppet::Type.type(:group).provide :aix, :parent => Puppet::Provider::AixObject d
94
94
 
95
95
 
96
96
  #--------------
97
- # Overwrite get_arguments to add the attributes arguments
97
+ # Overwrite get_arguments to add the attributes' arguments
98
98
  def get_arguments(key, value, mapping, objectinfo)
99
- # In the case of attributes, return a list of key=vlaue
99
+ # In the case of attributes, return a list of key=value
100
100
  if key == :attributes
101
101
  raise Puppet::Error, "Attributes must be a list of pairs key=value on #{@resource.class.name}[#{@resource.name}]" \
102
102
  unless value and value.is_a? Hash
@@ -106,7 +106,7 @@ Puppet::Type.type(:group).provide :aix, :parent => Puppet::Provider::AixObject d
106
106
  end
107
107
 
108
108
  def filter_attributes(hash)
109
- # Return only not managed attributtes.
109
+ # Return only not managed attributes.
110
110
  hash.select {
111
111
  |k,v| !self.class.attribute_mapping_from.include?(k) and
112
112
  !self.class.attribute_ignore.include?(k)
@@ -141,7 +141,7 @@ Puppet::Type.type(:macauthorization).provide :macauthorization, :parent => Puppe
141
141
  # first we re-read the right just to make sure we're in sync for
142
142
  # values that weren't specified in the manifest. As we're supplying
143
143
  # the whole plist when specifying the right it seems safest to be
144
- # paranoid given the low cost of quering the db once more.
144
+ # paranoid given the low cost of querying the db once more.
145
145
  cmds = []
146
146
  cmds << :security << "authorizationdb" << "read" << resource[:name]
147
147
  output = execute(cmds, :failonfail => false, :combine => false)
@@ -34,7 +34,7 @@ Puppet::Type.type(:mailalias).provide(
34
34
  if record[:recipient]
35
35
  dest = record[:recipient].collect do |d|
36
36
  # Quote aliases that have non-alpha chars
37
- if d =~ /[^-\w@.]/
37
+ if d =~ /[^-+\w@.]/
38
38
  '"%s"' % d
39
39
  else
40
40
  d
@@ -133,13 +133,13 @@ Puppet::Type.type(:mcx).provide :mcxcontent, :parent => Puppet::Provider do
133
133
  ds_type = name.split('/')[1]
134
134
  unless ds_type
135
135
  raise MCXContentProviderException,
136
- "Coult not parse ds_type from resource name '#{name}'. Specify with ds_type parameter."
136
+ "Could not parse ds_type from resource name '#{name}'. Specify with ds_type parameter."
137
137
  end
138
138
  # De-pluralize and downcase.
139
139
  ds_type = ds_type.chop.downcase.to_sym
140
140
  unless TypeMap.key? ds_type
141
141
  raise MCXContentProviderException,
142
- "Coult not parse ds_type from resource name '#{name}'. Specify with ds_type parameter."
142
+ "Could not parse ds_type from resource name '#{name}'. Specify with ds_type parameter."
143
143
  end
144
144
  ds_type
145
145
  end
@@ -61,7 +61,7 @@ Puppet::Type.type(:mount).provide(
61
61
  ret[filesystem_index] = filesystem_stanza.join("\n") if filesystem_stanza
62
62
  filesystem_stanza = Array(line)
63
63
  filesystem_index = i
64
- # Eat the preceeding blank line
64
+ # Eat the preceding blank line
65
65
  ret[i-1] = nil if i > 0 and ret[i-1] and ret[i-1].match(%r{^\s*$})
66
66
  nil
67
67
  elsif line.match(%r{^(\s*\*.*|\s*)$})
@@ -63,7 +63,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
63
63
  def self.instances
64
64
  # JJM Class method that provides an array of instance objects of this
65
65
  # type.
66
- # JJM: Properties are dependent on the Puppet::Type we're managine.
66
+ # JJM: Properties are dependent on the Puppet::Type we're managing.
67
67
  type_property_array = [:name] + @resource_type.validproperties
68
68
 
69
69
  # Create a new instance of this Puppet::Type for each object present
@@ -126,7 +126,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
126
126
 
127
127
  # NBK: need to read the existing password here as it's not actually
128
128
  # stored in the user record. It is stored at a path that involves the
129
- # UUID of the user record for non-Mobile local acccounts.
129
+ # UUID of the user record for non-Mobile local accounts.
130
130
  # Mobile Accounts are out of scope for this provider for now
131
131
  attribute_hash[:password] = self.get_password(attribute_hash[:guid], attribute_hash[:name]) if @resource_type.validproperties.include?(:password) and Puppet.features.root?
132
132
  attribute_hash
@@ -167,8 +167,8 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
167
167
 
168
168
  command_vector = [ command(:dscl), "-plist", "." ]
169
169
 
170
- # JJM: The actual action to perform. See "man dscl"
171
- # Common actiosn: -create, -delete, -merge, -append, -passwd
170
+ # JJM: The actual action to perform. See "man dscl".
171
+ # Common actions: -create, -delete, -merge, -append, -passwd
172
172
  command_vector << ds_action
173
173
  # JJM: get_ds_path will spit back "Users" or "Groups",
174
174
  # etc... Depending on the Puppet::Type of our self.
@@ -186,7 +186,7 @@ class Puppet::Provider::NameService::DirectoryService < Puppet::Provider::NameSe
186
186
  # 10.7 uses salted SHA512 password hashes which are 128 characters plus
187
187
  # an 8 character salt. Previous versions used a SHA1 hash padded with
188
188
  # zeroes. If someone attempts to use a password hash that worked with
189
- # a previous version of OX X, we will fail early and warn them.
189
+ # a previous version of OS X, we will fail early and warn them.
190
190
  if password_hash.length != 136
191
191
  fail("OS X 10.7 requires a Salted SHA512 hash password of 136 characters. \
192
192
  Please check your password and try again.")
@@ -7,7 +7,7 @@
7
7
  # and are easier to manage.
8
8
  #
9
9
  # Note: the 'apple' Provider checks for the package name
10
- # in /L/Receipts. Since we possibly install multiple apps's from
10
+ # in /L/Receipts. Since we possibly install multiple apps from
11
11
  # a single source, we treat the source .app.dmg file as the package name.
12
12
  # As a result, we store installed .app.dmg file names
13
13
  # in /var/db/.puppet_appdmg_installed_<name>
@@ -100,10 +100,10 @@ Puppet::Type.type(:package).provide(:appdmg, :parent => Puppet::Provider::Packag
100
100
  def install
101
101
  source = nil
102
102
  unless source = @resource[:source]
103
- self.fail "Mac OS X PKG DMG's must specify a package source."
103
+ self.fail "Mac OS X PKG DMGs must specify a package source."
104
104
  end
105
105
  unless name = @resource[:name]
106
- self.fail "Mac OS X PKG DMG's must specify a package name."
106
+ self.fail "Mac OS X PKG DMGs must specify a package name."
107
107
  end
108
108
  self.class.installpkgdmg(source,name)
109
109
  end
@@ -2,7 +2,7 @@ require 'puppet/provider/package'
2
2
 
3
3
  # OS X Packaging sucks. We can install packages, but that's about it.
4
4
  Puppet::Type.type(:package).provide :apple, :parent => Puppet::Provider::Package do
5
- desc "Package management based on OS X's builtin packaging system. This is
5
+ desc "Package management based on OS X's built-in packaging system. This is
6
6
  essentially the simplest and least functional package system in existence --
7
7
  it only supports installation; no deletion or upgrades. The provider will
8
8
  automatically add the `.pkg` extension, so leave that off when specifying
@@ -30,6 +30,11 @@ Puppet::Type.type(:package).provide :dnf, :parent => :yum do
30
30
 
31
31
  defaultfor :operatingsystem => :fedora, :operatingsystemmajrelease => ['22', '23', '24']
32
32
 
33
+ def self.update_command
34
+ # In DNF, update is deprecated for upgrade
35
+ 'upgrade'
36
+ end
37
+
33
38
  # The value to pass to DNF as its error output level.
34
39
  # DNF differs from Yum slightly with regards to error outputting.
35
40
  #
@@ -114,7 +114,7 @@ Puppet::Type.type(:package).provide :nim, :parent => :aix, :source => :aix do
114
114
  # Now we know if the package type is RPM or not, and we can adjust our
115
115
  # `pkg` string for passing to the install command accordingly.
116
116
  if (package_type == :rpm)
117
- # RPM's expect a hyphen between the package name and the version number
117
+ # RPMs expect a hyphen between the package name and the version number
118
118
  version_separator = "-"
119
119
  else
120
120
  # installp/BFF packages expect a space between the package name and the
@@ -36,7 +36,7 @@ Puppet::Type.type(:package).provide :pacman, :parent => Puppet::Provider::Packag
36
36
  end
37
37
 
38
38
  # Install a package using 'pacman', or 'yaourt' if available.
39
- # Installs quietly, without confirmation or progressbar, updates package
39
+ # Installs quietly, without confirmation or progress bar, updates package
40
40
  # list from servers defined in pacman.conf.
41
41
  def install
42
42
  if @resource[:source]
@@ -163,7 +163,7 @@ Puppet::Type.type(:package).provide :pacman, :parent => Puppet::Provider::Packag
163
163
  end
164
164
  end
165
165
 
166
- # Querys information for a package or package group
166
+ # Queries information for a package or package group
167
167
  def query
168
168
  installed_packages = self.class.get_installed_packages
169
169
  resource_name = @resource[:name]
@@ -1,5 +1,5 @@
1
1
  # Puppet package provider for Python's `pip` package management frontend.
2
- # <http://pip.openplans.org/>
2
+ # <http://pip.pypa.io/>
3
3
 
4
4
  require 'puppet/provider/package'
5
5
  require 'xmlrpc/client'
@@ -153,8 +153,10 @@ Puppet::Type.type(:package).provide :pip,
153
153
  process.collect do |line|
154
154
  # PIP OUTPUT: Could not find a version that satisfies the requirement Django==versionplease (from versions: 1.1.3, 1.8rc1)
155
155
  if line =~ /from versions: /
156
- textAfterLastMatch = $'
157
- versionList = textAfterLastMatch.chomp(")\n").split(', ')
156
+ textAfterLastMatch = $'.chomp(")\n")
157
+ versionList = textAfterLastMatch.split(', ').sort do |x,y|
158
+ Puppet::Util::Package.versioncmp(x, y)
159
+ end
158
160
  return versionList.last
159
161
  end
160
162
  end
@@ -1,5 +1,5 @@
1
1
  # Puppet package provider for Python's `pip3` package management frontend.
2
- # <http://pip.openplans.org/>
2
+ # <http://pip.pypa.io/>
3
3
 
4
4
  require 'puppet/provider/package/pip'
5
5
 
@@ -1,16 +1,16 @@
1
1
  require 'puppet/provider/package'
2
2
 
3
3
  Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package do
4
- desc "OpenSolaris image packaging system. See pkg(5) for more information"
4
+ desc "OpenSolaris image packaging system. See pkg(5) for more information."
5
5
  # https://docs.oracle.com/cd/E19963-01/html/820-6572/managepkgs.html
6
- # A few notes before we start :
6
+ # A few notes before we start:
7
7
  # Opensolaris pkg has two slightly different formats (as of now.)
8
8
  # The first one is what is distributed with the Solaris 11 Express 11/10 dvd
9
9
  # The latest one is what you get when you update package.
10
10
  # To make things more interesting, pkg version just returns a sha sum.
11
11
  # dvd: pkg version => 052adf36c3f4
12
12
  # updated: pkg version => 630e1ffc7a19
13
- # Thankfully, solaris has not changed the commands to be used.
13
+ # Thankfully, Solaris has not changed the commands to be used.
14
14
  # TODO: We still have to allow packages to specify a preferred publisher.
15
15
 
16
16
  has_feature :versionable
@@ -29,11 +29,11 @@ Puppet::Type.type(:package).provide :pkg, :parent => Puppet::Provider::Package d
29
29
  pkg(:list, '-Hv').split("\n").map{|l| new(parse_line(l))}
30
30
  end
31
31
 
32
- # The IFO flag field is just what it names, the first field can have ether
32
+ # The IFO flag field is just what it names, the first field can have either
33
33
  # i_nstalled or -, and second field f_rozen or -, and last
34
34
  # o_bsolate or r_rename or -
35
35
  # so this checks if the installed field is present, and also verifies that
36
- # if not the field is -, else we dont know what we are doing and exit with
36
+ # if not the field is -, else we don't know what we are doing and exit with
37
37
  # out doing more damage.
38
38
  def self.ifo_flag(flags)
39
39
  (