puppet 3.2.4 → 3.3.0.rc2

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 (562) hide show
  1. data/COMMITTERS.md +101 -42
  2. data/Gemfile +15 -4
  3. data/README.md +5 -1
  4. data/README_DEVELOPER.md +117 -54
  5. data/Rakefile +4 -0
  6. data/ext/build_defaults.yaml +3 -2
  7. data/ext/debian/puppet-common.manpages +33 -1
  8. data/ext/gentoo/init.d/puppet +1 -1
  9. data/ext/gentoo/init.d/puppetmaster +1 -1
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/install.rb +2 -1
  12. data/lib/hiera/backend/puppet_backend.rb +1 -1
  13. data/lib/puppet/application.rb +10 -9
  14. data/lib/puppet/application/agent.rb +87 -93
  15. data/lib/puppet/application/apply.rb +0 -2
  16. data/lib/puppet/application/device.rb +3 -3
  17. data/lib/puppet/application/kick.rb +2 -2
  18. data/lib/puppet/application/master.rb +41 -19
  19. data/lib/puppet/application/queue.rb +5 -3
  20. data/lib/puppet/bindings.rb +147 -0
  21. data/lib/puppet/configurer.rb +25 -15
  22. data/lib/puppet/configurer/fact_handler.rb +2 -9
  23. data/lib/puppet/daemon.rb +44 -33
  24. data/lib/puppet/defaults.rb +57 -26
  25. data/lib/puppet/error.rb +1 -1
  26. data/lib/puppet/external/dot.rb +2 -2
  27. data/lib/puppet/external/nagios/base.rb +1 -6
  28. data/lib/puppet/external/pson/common.rb +2 -2
  29. data/lib/puppet/external/pson/pure/generator.rb +2 -2
  30. data/lib/puppet/external/pson/pure/parser.rb +1 -1
  31. data/lib/puppet/face/ca.rb +1 -1
  32. data/lib/puppet/face/config.rb +1 -1
  33. data/lib/puppet/face/help.rb +2 -2
  34. data/lib/puppet/face/module/list.rb +2 -2
  35. data/lib/puppet/feature/rails.rb +1 -1
  36. data/lib/puppet/file_bucket/dipper.rb +0 -1
  37. data/lib/puppet/file_serving/base.rb +1 -1
  38. data/lib/puppet/file_serving/configuration/parser.rb +20 -14
  39. data/lib/puppet/forge.rb +0 -32
  40. data/lib/puppet/forge/cache.rb +1 -1
  41. data/lib/puppet/forge/errors.rb +3 -3
  42. data/lib/puppet/forge/repository.rb +7 -42
  43. data/lib/puppet/graph.rb +11 -0
  44. data/lib/puppet/graph/key.rb +26 -0
  45. data/lib/puppet/graph/prioritizer.rb +29 -0
  46. data/lib/puppet/graph/random_prioritizer.rb +16 -0
  47. data/lib/puppet/{rb_tree_map.rb → graph/rb_tree_map.rb} +3 -3
  48. data/lib/puppet/graph/relationship_graph.rb +246 -0
  49. data/lib/puppet/graph/sequential_prioritizer.rb +31 -0
  50. data/lib/puppet/{simple_graph.rb → graph/simple_graph.rb} +22 -3
  51. data/lib/puppet/graph/title_hash_prioritizer.rb +16 -0
  52. data/lib/puppet/indirector.rb +2 -2
  53. data/lib/puppet/indirector/catalog/compiler.rb +10 -7
  54. data/lib/puppet/indirector/catalog/static_compiler.rb +50 -0
  55. data/lib/puppet/indirector/certificate/rest.rb +1 -1
  56. data/lib/puppet/indirector/exec.rb +1 -1
  57. data/lib/puppet/indirector/facts/facter.rb +2 -2
  58. data/lib/puppet/indirector/facts/inventory_active_record.rb +0 -1
  59. data/lib/puppet/indirector/facts/network_device.rb +1 -1
  60. data/lib/puppet/indirector/file_bucket_file/file.rb +0 -1
  61. data/lib/puppet/indirector/indirection.rb +2 -2
  62. data/lib/puppet/indirector/memory.rb +9 -0
  63. data/lib/puppet/indirector/node/ldap.rb +2 -4
  64. data/lib/puppet/indirector/report/processor.rb +1 -2
  65. data/lib/puppet/indirector/report/rest.rb +1 -1
  66. data/lib/puppet/indirector/request.rb +32 -10
  67. data/lib/puppet/indirector/resource/rest.rb +1 -1
  68. data/lib/puppet/indirector/resource_type/parser.rb +31 -12
  69. data/lib/puppet/interface.rb +1 -1
  70. data/lib/puppet/interface/documentation.rb +7 -11
  71. data/lib/puppet/interface/option.rb +1 -1
  72. data/lib/puppet/interface/option_builder.rb +1 -1
  73. data/lib/puppet/metatype/manager.rb +2 -2
  74. data/lib/puppet/module.rb +7 -1
  75. data/lib/puppet/module_tool.rb +1 -1
  76. data/lib/puppet/module_tool/applications/application.rb +10 -0
  77. data/lib/puppet/module_tool/applications/installer.rb +6 -3
  78. data/lib/puppet/module_tool/dependency.rb +2 -0
  79. data/lib/puppet/module_tool/errors/upgrader.rb +1 -1
  80. data/lib/puppet/module_tool/metadata.rb +25 -13
  81. data/lib/puppet/module_tool/modulefile.rb +7 -7
  82. data/lib/puppet/module_tool/shared_behaviors.rb +4 -2
  83. data/lib/puppet/module_tool/skeleton.rb +1 -1
  84. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +5 -5
  85. data/lib/puppet/module_tool/skeleton/templates/generator/tests/init.pp.erb +5 -4
  86. data/lib/puppet/network/auth_config_parser.rb +3 -0
  87. data/lib/puppet/network/authconfig.rb +0 -1
  88. data/lib/puppet/network/authorization.rb +1 -1
  89. data/lib/puppet/network/authstore.rb +2 -2
  90. data/lib/puppet/network/format_handler.rb +25 -114
  91. data/lib/puppet/network/format_support.rb +106 -0
  92. data/lib/puppet/network/formats.rb +10 -4
  93. data/lib/puppet/network/http/compression.rb +1 -1
  94. data/lib/puppet/network/http/connection.rb +76 -32
  95. data/lib/puppet/network/http/handler.rb +122 -61
  96. data/lib/puppet/network/http/rack/rest.rb +1 -1
  97. data/lib/puppet/network/http/webrick/rest.rb +9 -3
  98. data/lib/puppet/network/http_pool.rb +2 -2
  99. data/lib/puppet/network/resolver.rb +1 -0
  100. data/lib/puppet/network/server.rb +5 -81
  101. data/lib/puppet/node/environment.rb +256 -13
  102. data/lib/puppet/node/facts.rb +28 -2
  103. data/lib/puppet/parameter.rb +27 -18
  104. data/lib/puppet/parameter/boolean.rb +20 -0
  105. data/lib/puppet/parameter/path.rb +1 -1
  106. data/lib/puppet/parameter/value.rb +1 -1
  107. data/lib/puppet/parameter/value_collection.rb +1 -1
  108. data/lib/puppet/parser/ast/arithmetic_operator.rb +8 -0
  109. data/lib/puppet/parser/ast/casestatement.rb +0 -3
  110. data/lib/puppet/parser/ast/lambda.rb +25 -6
  111. data/lib/puppet/parser/ast/leaf.rb +10 -3
  112. data/lib/puppet/parser/ast/nop.rb +1 -1
  113. data/lib/puppet/parser/ast/resource_override.rb +0 -2
  114. data/lib/puppet/parser/compiler.rb +92 -34
  115. data/lib/puppet/parser/files.rb +0 -5
  116. data/lib/puppet/parser/functions/create_resources.rb +23 -46
  117. data/lib/puppet/parser/functions/each.rb +0 -2
  118. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  119. data/lib/puppet/parser/functions/foreach.rb +0 -2
  120. data/lib/puppet/parser/functions/hiera_include.rb +1 -1
  121. data/lib/puppet/parser/functions/lookup.rb +44 -0
  122. data/lib/puppet/parser/functions/slice.rb +1 -1
  123. data/lib/puppet/parser/grammar.ra +0 -1
  124. data/lib/puppet/parser/lexer.rb +0 -1
  125. data/lib/puppet/parser/parser.rb +0 -1
  126. data/lib/puppet/parser/parser_factory.rb +3 -2
  127. data/lib/puppet/parser/parser_support.rb +1 -1
  128. data/lib/puppet/parser/relationship.rb +1 -1
  129. data/lib/puppet/parser/scope.rb +49 -24
  130. data/lib/puppet/parser/type_loader.rb +13 -18
  131. data/lib/puppet/pops.rb +45 -0
  132. data/lib/puppet/pops/adaptable.rb +2 -2
  133. data/lib/puppet/pops/adapters.rb +4 -0
  134. data/lib/puppet/pops/binder/binder.rb +421 -0
  135. data/lib/puppet/pops/binder/binder_issues.rb +142 -0
  136. data/lib/puppet/pops/binder/bindings_checker.rb +217 -0
  137. data/lib/puppet/pops/binder/bindings_composer.rb +241 -0
  138. data/lib/puppet/pops/binder/bindings_factory.rb +847 -0
  139. data/lib/puppet/pops/binder/bindings_label_provider.rb +46 -0
  140. data/lib/puppet/pops/binder/bindings_loader.rb +79 -0
  141. data/lib/puppet/pops/binder/bindings_model.rb +215 -0
  142. data/lib/puppet/pops/binder/bindings_model_dumper.rb +205 -0
  143. data/lib/puppet/pops/binder/bindings_validator_factory.rb +28 -0
  144. data/lib/puppet/pops/binder/config/binder_config.rb +139 -0
  145. data/lib/puppet/pops/binder/config/binder_config_checker.rb +183 -0
  146. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +32 -0
  147. data/lib/puppet/pops/binder/config/issues.rb +106 -0
  148. data/lib/puppet/pops/binder/hiera2.rb +10 -0
  149. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +148 -0
  150. data/lib/puppet/pops/binder/hiera2/config.rb +69 -0
  151. data/lib/puppet/pops/binder/hiera2/config_checker.rb +68 -0
  152. data/lib/puppet/pops/binder/hiera2/diagnostic_producer.rb +36 -0
  153. data/lib/puppet/pops/binder/hiera2/issues.rb +67 -0
  154. data/lib/puppet/pops/binder/hiera2/json_backend.rb +18 -0
  155. data/lib/puppet/pops/binder/hiera2/yaml_backend.rb +21 -0
  156. data/lib/puppet/pops/binder/injector.rb +688 -0
  157. data/lib/puppet/pops/binder/injector_entry.rb +53 -0
  158. data/lib/puppet/pops/binder/key_factory.rb +61 -0
  159. data/lib/puppet/pops/binder/producers.rb +829 -0
  160. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +67 -0
  161. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +34 -0
  162. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +92 -0
  163. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +84 -0
  164. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +54 -0
  165. data/lib/puppet/pops/binder/system_bindings.rb +72 -0
  166. data/lib/puppet/pops/issue_reporter.rb +75 -0
  167. data/lib/puppet/pops/issues.rb +9 -5
  168. data/lib/puppet/pops/model/ast_transformer.rb +4 -4
  169. data/lib/puppet/pops/model/ast_tree_dumper.rb +1 -1
  170. data/lib/puppet/pops/model/factory.rb +25 -13
  171. data/lib/puppet/pops/model/model.rb +1 -1
  172. data/lib/puppet/pops/model/tree_dumper.rb +2 -2
  173. data/lib/puppet/pops/parser/egrammar.ra +0 -1
  174. data/lib/puppet/pops/parser/eparser.rb +1 -2
  175. data/lib/puppet/pops/parser/evaluating_parser.rb +162 -0
  176. data/lib/puppet/pops/parser/lexer.rb +8 -6
  177. data/lib/puppet/pops/types/class_loader.rb +118 -0
  178. data/lib/puppet/pops/types/type_calculator.rb +557 -0
  179. data/lib/puppet/pops/types/type_factory.rb +147 -0
  180. data/lib/puppet/pops/types/type_parser.rb +117 -0
  181. data/lib/puppet/pops/types/types.rb +132 -0
  182. data/lib/puppet/pops/validation.rb +146 -17
  183. data/lib/puppet/pops/validation/checker3_1.rb +1 -1
  184. data/lib/puppet/pops/validation/validator_factory_3_1.rb +6 -16
  185. data/lib/puppet/property.rb +3 -3
  186. data/lib/puppet/property/keyvalue.rb +1 -1
  187. data/lib/puppet/provider.rb +2 -2
  188. data/lib/puppet/provider/aixobject.rb +19 -21
  189. data/lib/puppet/provider/augeas/augeas.rb +3 -1
  190. data/lib/puppet/provider/command.rb +2 -2
  191. data/lib/puppet/provider/group/aix.rb +1 -1
  192. data/lib/puppet/provider/group/ldap.rb +1 -1
  193. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  194. data/lib/puppet/provider/mailalias/aliases.rb +3 -8
  195. data/lib/puppet/provider/mcx/mcxcontent.rb +7 -1
  196. data/lib/puppet/provider/mount.rb +8 -3
  197. data/lib/puppet/provider/nameservice.rb +1 -1
  198. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  199. data/lib/puppet/provider/package/appdmg.rb +1 -1
  200. data/lib/puppet/provider/package/apt.rb +0 -1
  201. data/lib/puppet/provider/package/dpkg.rb +86 -32
  202. data/lib/puppet/provider/package/fink.rb +0 -2
  203. data/lib/puppet/provider/package/freebsd.rb +0 -2
  204. data/lib/puppet/provider/package/openbsd.rb +57 -10
  205. data/lib/puppet/provider/package/opkg.rb +0 -1
  206. data/lib/puppet/provider/package/pacman.rb +0 -1
  207. data/lib/puppet/provider/package/pip.rb +1 -1
  208. data/lib/puppet/provider/package/pkgdmg.rb +17 -6
  209. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  210. data/lib/puppet/provider/package/portage.rb +9 -1
  211. data/lib/puppet/provider/package/ports.rb +2 -2
  212. data/lib/puppet/provider/package/rpm.rb +29 -12
  213. data/lib/puppet/provider/package/rug.rb +1 -1
  214. data/lib/puppet/provider/package/urpmi.rb +11 -15
  215. data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
  216. data/lib/puppet/provider/package/windows/package.rb +1 -26
  217. data/lib/puppet/provider/package/yum.rb +1 -1
  218. data/lib/puppet/provider/package/zypper.rb +22 -3
  219. data/lib/puppet/provider/parsedfile.rb +1 -12
  220. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +1 -1
  221. data/lib/puppet/provider/service/base.rb +1 -1
  222. data/lib/puppet/provider/service/daemontools.rb +3 -3
  223. data/lib/puppet/provider/service/debian.rb +1 -1
  224. data/lib/puppet/provider/service/init.rb +14 -20
  225. data/lib/puppet/provider/service/openrc.rb +3 -1
  226. data/lib/puppet/provider/service/redhat.rb +5 -8
  227. data/lib/puppet/provider/service/runit.rb +3 -2
  228. data/lib/puppet/provider/service/systemd.rb +1 -1
  229. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  230. data/lib/puppet/provider/sshkey/parsed.rb +0 -2
  231. data/lib/puppet/provider/user/aix.rb +25 -12
  232. data/lib/puppet/provider/user/directoryservice.rb +4 -7
  233. data/lib/puppet/provider/user/ldap.rb +0 -1
  234. data/lib/puppet/provider/user/user_role_add.rb +2 -0
  235. data/lib/puppet/provider/user/useradd.rb +1 -1
  236. data/lib/puppet/provider/zone/solaris.rb +1 -2
  237. data/lib/puppet/reference/metaparameter.rb +1 -1
  238. data/lib/puppet/reference/type.rb +1 -1
  239. data/lib/puppet/reports/rrdgraph.rb +1 -1
  240. data/lib/puppet/reports/tagmail.rb +1 -1
  241. data/lib/puppet/resource.rb +16 -4
  242. data/lib/puppet/resource/catalog.rb +111 -173
  243. data/lib/puppet/resource/status.rb +42 -3
  244. data/lib/puppet/resource/type.rb +33 -46
  245. data/lib/puppet/resource/type_collection.rb +19 -15
  246. data/lib/puppet/run.rb +5 -1
  247. data/lib/puppet/scheduler/scheduler.rb +14 -15
  248. data/lib/puppet/settings.rb +78 -41
  249. data/lib/puppet/settings/boolean_setting.rb +0 -2
  250. data/lib/puppet/settings/config_file.rb +0 -2
  251. data/lib/puppet/settings/directory_setting.rb +0 -2
  252. data/lib/puppet/settings/duration_setting.rb +0 -2
  253. data/lib/puppet/settings/enum_setting.rb +16 -0
  254. data/lib/puppet/settings/file_setting.rb +0 -2
  255. data/lib/puppet/settings/path_setting.rb +0 -2
  256. data/lib/puppet/settings/string_setting.rb +0 -3
  257. data/lib/puppet/settings/terminus_setting.rb +0 -2
  258. data/lib/puppet/ssl/certificate_authority.rb +102 -9
  259. data/lib/puppet/test/test_helper.rb +1 -0
  260. data/lib/puppet/transaction.rb +130 -292
  261. data/lib/puppet/transaction/additional_resource_generator.rb +126 -0
  262. data/lib/puppet/transaction/event.rb +16 -1
  263. data/lib/puppet/transaction/report.rb +34 -14
  264. data/lib/puppet/transaction/resource_harness.rb +16 -19
  265. data/lib/puppet/type.rb +59 -53
  266. data/lib/puppet/type/component.rb +0 -2
  267. data/lib/puppet/type/cron.rb +13 -2
  268. data/lib/puppet/type/exec.rb +5 -7
  269. data/lib/puppet/type/file.rb +9 -32
  270. data/lib/puppet/type/file/content.rb +4 -1
  271. data/lib/puppet/type/file/ctime.rb +3 -1
  272. data/lib/puppet/type/file/ensure.rb +1 -1
  273. data/lib/puppet/type/file/mode.rb +0 -1
  274. data/lib/puppet/type/file/mtime.rb +2 -1
  275. data/lib/puppet/type/group.rb +7 -9
  276. data/lib/puppet/type/host.rb +1 -2
  277. data/lib/puppet/type/mcx.rb +0 -1
  278. data/lib/puppet/type/mount.rb +38 -6
  279. data/lib/puppet/type/package.rb +2 -2
  280. data/lib/puppet/type/resources.rb +5 -4
  281. data/lib/puppet/type/schedule.rb +1 -4
  282. data/lib/puppet/type/selmodule.rb +1 -1
  283. data/lib/puppet/type/service.rb +1 -3
  284. data/lib/puppet/type/tidy.rb +3 -3
  285. data/lib/puppet/type/user.rb +9 -13
  286. data/lib/puppet/type/yumrepo.rb +11 -7
  287. data/lib/puppet/util.rb +14 -7
  288. data/lib/puppet/util/autoload.rb +0 -1
  289. data/lib/puppet/util/backups.rb +1 -3
  290. data/lib/puppet/util/classgen.rb +1 -1
  291. data/lib/puppet/util/command_line/puppet_option_parser.rb +1 -3
  292. data/lib/puppet/util/command_line/trollop.rb +1 -1
  293. data/lib/puppet/util/constant_inflector.rb +1 -2
  294. data/lib/puppet/util/errors.rb +1 -0
  295. data/lib/puppet/util/file_watcher.rb +28 -0
  296. data/lib/puppet/util/fileparsing.rb +1 -3
  297. data/lib/puppet/util/filetype.rb +0 -1
  298. data/lib/puppet/util/http_proxy.rb +38 -0
  299. data/lib/puppet/util/ldap/manager.rb +1 -2
  300. data/lib/puppet/util/log.rb +31 -10
  301. data/lib/puppet/util/log/destinations.rb +0 -50
  302. data/lib/puppet/util/metric.rb +8 -1
  303. data/lib/puppet/util/monkey_patches.rb +14 -148
  304. data/lib/puppet/util/network_device/cisco/facts.rb +1 -1
  305. data/lib/puppet/util/network_device/config.rb +6 -9
  306. data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
  307. data/lib/puppet/util/pidlock.rb +3 -0
  308. data/lib/puppet/util/posix.rb +1 -1
  309. data/lib/puppet/util/profiler.rb +1 -1
  310. data/lib/puppet/util/rdoc.rb +1 -1
  311. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +0 -1
  312. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +50 -42
  313. data/lib/puppet/util/retryaction.rb +0 -1
  314. data/lib/puppet/util/symbolic_file_mode.rb +5 -1
  315. data/lib/puppet/util/tagging.rb +0 -2
  316. data/lib/puppet/util/warnings.rb +3 -0
  317. data/lib/puppet/util/watched_file.rb +37 -0
  318. data/lib/puppet/util/watcher.rb +17 -0
  319. data/lib/puppet/util/watcher/change_watcher.rb +33 -0
  320. data/lib/puppet/util/watcher/periodic_watcher.rb +37 -0
  321. data/lib/puppet/util/watcher/timer.rb +19 -0
  322. data/lib/puppet/util/windows/user.rb +1 -1
  323. data/lib/puppet/version.rb +1 -1
  324. data/lib/puppetx.rb +109 -0
  325. data/lib/puppetx/puppet/bindings_scheme_handler.rb +130 -0
  326. data/lib/puppetx/puppet/hiera2_backend.rb +31 -0
  327. data/lib/puppetx/puppet/syntax_checker.rb +91 -0
  328. data/lib/puppetx/puppetlabs/syntax_checkers/json.rb +39 -0
  329. data/lib/semver.rb +1 -1
  330. data/man/man8/puppet-kick.8 +1 -1
  331. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +15 -0
  332. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/binder_config.yaml +18 -0
  333. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/hiera.yaml +8 -0
  334. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/common.yaml +1 -0
  335. data/spec/fixtures/unit/pops/binder/bindings_composer/hiera1config/modules/good/hiera.yaml +10 -0
  336. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +19 -0
  337. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/common.yaml +1 -0
  338. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/hiera.yaml +11 -0
  339. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/localhost.yaml +1 -0
  340. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/common.yaml +3 -0
  341. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/hiera.yaml +13 -0
  342. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppet/bindings/awesome/default.rb +4 -0
  343. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_backend.rb +11 -0
  344. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/lib/puppetx/awesome/echo_scheme_handler.rb +18 -0
  345. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome/localhost.yaml +1 -0
  346. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/common.yaml +3 -0
  347. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/hiera_config.yaml +9 -0
  348. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/common.yaml +2 -0
  349. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/hiera.yaml +11 -0
  350. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +9 -0
  351. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/hiera.yaml +9 -0
  352. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.json +9 -0
  353. data/spec/fixtures/unit/pops/binder/hiera2/bindings_provider/ok/node.example.com.yaml +5 -0
  354. data/spec/fixtures/unit/pops/binder/hiera2/config/bad_syntax/hiera.yaml +10 -0
  355. data/spec/fixtures/unit/pops/binder/hiera2/config/malformed_hierarchy/hiera.yaml +8 -0
  356. data/spec/fixtures/unit/pops/binder/hiera2/config/missing/foo.txt +1 -0
  357. data/spec/fixtures/unit/pops/binder/hiera2/config/no_backends/hiera.yaml +7 -0
  358. data/spec/fixtures/unit/pops/binder/hiera2/config/no_hierarchy/hiera.yaml +4 -0
  359. data/spec/fixtures/unit/pops/binder/hiera2/config/not_a_hash/hiera.yaml +2 -0
  360. data/spec/fixtures/unit/pops/binder/hiera2/config/ok/hiera.yaml +8 -0
  361. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/empty/common.yaml +0 -0
  362. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/invalid/common.yaml +1 -0
  363. data/spec/fixtures/unit/pops/binder/hiera2/yaml_backend/ok/common.yaml +2 -0
  364. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +2 -0
  365. data/spec/integration/agent/logging_spec.rb +178 -0
  366. data/spec/integration/configurer_spec.rb +1 -1
  367. data/spec/integration/defaults_spec.rb +0 -6
  368. data/spec/integration/network/authconfig_spec.rb +19 -0
  369. data/spec/integration/network/server/webrick_spec.rb +10 -11
  370. data/spec/integration/parser/catalog_spec.rb +85 -0
  371. data/spec/integration/provider/cron/crontab_spec.rb +11 -0
  372. data/spec/integration/provider/mount_spec.rb +1 -0
  373. data/spec/integration/transaction_spec.rb +8 -8
  374. data/spec/integration/type/file_spec.rb +1 -1
  375. data/spec/integration/util/settings_spec.rb +58 -11
  376. data/spec/lib/matchers/include_in_order.rb +21 -0
  377. data/spec/lib/matchers/include_in_order_spec.rb +30 -0
  378. data/spec/lib/matchers/relationship_graph_matchers.rb +48 -0
  379. data/spec/lib/puppet_spec/compiler.rb +24 -0
  380. data/spec/lib/puppet_spec/pops.rb +16 -0
  381. data/spec/spec_helper.rb +0 -1
  382. data/spec/unit/application/agent_spec.rb +145 -145
  383. data/spec/unit/application/apply_spec.rb +1 -1
  384. data/spec/unit/application/doc_spec.rb +1 -1
  385. data/spec/unit/application/face_base_spec.rb +3 -3
  386. data/spec/unit/application/facts_spec.rb +1 -0
  387. data/spec/unit/application/master_spec.rb +0 -15
  388. data/spec/unit/application/queue_spec.rb +6 -12
  389. data/spec/unit/application/resource_spec.rb +1 -1
  390. data/spec/unit/configurer/fact_handler_spec.rb +19 -50
  391. data/spec/unit/configurer_spec.rb +23 -7
  392. data/spec/unit/daemon_spec.rb +97 -121
  393. data/spec/unit/defaults_spec.rb +44 -0
  394. data/spec/unit/face/node_spec.rb +2 -2
  395. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -33
  396. data/spec/unit/file_serving/configuration_spec.rb +2 -2
  397. data/spec/unit/file_serving/mount/file_spec.rb +4 -4
  398. data/spec/unit/forge/repository_spec.rb +9 -29
  399. data/spec/unit/graph/key_spec.rb +41 -0
  400. data/spec/unit/{rb_tree_map_spec.rb → graph/rb_tree_map_spec.rb} +7 -7
  401. data/spec/unit/graph/relationship_graph_spec.rb +393 -0
  402. data/spec/unit/graph/sequential_prioritizer_spec.rb +32 -0
  403. data/spec/unit/{simple_graph_spec.rb → graph/simple_graph.rb} +42 -254
  404. data/spec/unit/graph/title_hash_prioritizer_spec.rb +49 -0
  405. data/spec/unit/hiera_puppet_spec.rb +1 -1
  406. data/spec/unit/indirector/catalog/active_record_spec.rb +4 -2
  407. data/spec/unit/indirector/catalog/compiler_spec.rb +20 -26
  408. data/spec/unit/indirector/face_spec.rb +1 -1
  409. data/spec/unit/indirector/facts/facter_spec.rb +11 -1
  410. data/spec/unit/indirector/facts/network_device_spec.rb +11 -1
  411. data/spec/unit/indirector/hiera_spec.rb +1 -1
  412. data/spec/unit/indirector/instrumentation_data/local_spec.rb +1 -1
  413. data/spec/unit/indirector/instrumentation_listener/local_spec.rb +1 -1
  414. data/spec/unit/indirector/request_spec.rb +92 -39
  415. data/spec/unit/indirector/rest_spec.rb +1 -0
  416. data/spec/unit/indirector_spec.rb +2 -2
  417. data/spec/unit/interface/option_builder_spec.rb +1 -0
  418. data/spec/unit/interface/option_spec.rb +1 -0
  419. data/spec/unit/interface_spec.rb +2 -2
  420. data/spec/unit/module_tool/applications/installer_spec.rb +49 -2
  421. data/spec/unit/module_tool/metadata_spec.rb +13 -0
  422. data/spec/unit/network/authstore_spec.rb +1 -1
  423. data/spec/unit/network/format_handler_spec.rb +33 -282
  424. data/spec/unit/network/format_support_spec.rb +199 -0
  425. data/spec/unit/network/formats_spec.rb +2 -2
  426. data/spec/unit/network/http/connection_spec.rb +88 -7
  427. data/spec/unit/network/http/handler_spec.rb +271 -249
  428. data/spec/unit/network/http/rack/rest_spec.rb +1 -1
  429. data/spec/unit/network/http/webrick/rest_spec.rb +73 -22
  430. data/spec/unit/network/http_pool_spec.rb +40 -0
  431. data/spec/unit/network/server_spec.rb +18 -207
  432. data/spec/unit/node/facts_spec.rb +68 -17
  433. data/spec/unit/other/selinux_spec.rb +24 -20
  434. data/spec/unit/parameter/boolean_spec.rb +25 -0
  435. data/spec/unit/parameter/value_collection_spec.rb +7 -7
  436. data/spec/unit/parameter_spec.rb +10 -13
  437. data/spec/unit/parser/ast/function_spec.rb +4 -4
  438. data/spec/unit/parser/ast/leaf_spec.rb +45 -6
  439. data/spec/unit/parser/collector_spec.rb +3 -3
  440. data/spec/unit/parser/compiler_spec.rb +4 -3
  441. data/spec/unit/parser/functions/create_resources_spec.rb +9 -25
  442. data/spec/unit/parser/functions/extlookup_spec.rb +2 -2
  443. data/spec/unit/parser/functions/hiera_include_spec.rb +12 -0
  444. data/spec/unit/parser/functions/lookup_spec.rb +96 -0
  445. data/spec/unit/parser/functions/regsubst_spec.rb +2 -2
  446. data/spec/unit/parser/functions/split_spec.rb +2 -2
  447. data/spec/unit/parser/functions/sprintf_spec.rb +1 -1
  448. data/spec/unit/parser/functions/versioncmp_spec.rb +2 -2
  449. data/spec/unit/parser/functions_spec.rb +7 -7
  450. data/spec/unit/parser/lexer_spec.rb +1 -1
  451. data/spec/unit/parser/methods/collect_spec.rb +43 -0
  452. data/spec/unit/parser/resource_spec.rb +9 -9
  453. data/spec/unit/parser/scope_spec.rb +45 -2
  454. data/spec/unit/parser/type_loader_spec.rb +159 -175
  455. data/spec/unit/pops/binder/binder_spec.rb +62 -0
  456. data/spec/unit/pops/binder/bindings_checker_spec.rb +196 -0
  457. data/spec/unit/pops/binder/bindings_composer_spec.rb +89 -0
  458. data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +18 -0
  459. data/spec/unit/pops/binder/config/binder_config_spec.rb +48 -0
  460. data/spec/unit/pops/binder/hiera2/bindings_provider_spec.rb +74 -0
  461. data/spec/unit/pops/binder/hiera2/config_spec.rb +61 -0
  462. data/spec/unit/pops/binder/hiera2/yaml_backend_spec.rb +33 -0
  463. data/spec/unit/pops/binder/injector_spec.rb +789 -0
  464. data/spec/unit/pops/containment_spec.rb +1 -0
  465. data/spec/unit/pops/issues_spec.rb +1 -1
  466. data/spec/unit/pops/parser/evaluating_parser_spec.rb +88 -0
  467. data/spec/unit/pops/parser/lexer_spec.rb +1 -1
  468. data/spec/unit/pops/parser/parse_calls_spec.rb +4 -0
  469. data/spec/unit/pops/parser/parser_spec.rb +1 -1
  470. data/spec/unit/pops/types/type_calculator_spec.rb +484 -0
  471. data/spec/unit/pops/types/type_factory_spec.rb +65 -0
  472. data/spec/unit/pops/types/type_parser_spec.rb +93 -0
  473. data/spec/unit/property/list_spec.rb +1 -1
  474. data/spec/unit/property/ordered_list_spec.rb +1 -1
  475. data/spec/unit/provider/aixobject_spec.rb +101 -0
  476. data/spec/unit/provider/augeas/augeas_spec.rb +14 -3
  477. data/spec/unit/provider/mcx/mcxcontent_spec.rb +52 -16
  478. data/spec/unit/provider/mount/parsed_spec.rb +44 -56
  479. data/spec/unit/provider/mount_spec.rb +11 -2
  480. data/spec/unit/provider/naginator_spec.rb +8 -0
  481. data/spec/unit/provider/package/apt_spec.rb +5 -1
  482. data/spec/unit/provider/package/aptitude_spec.rb +9 -5
  483. data/spec/unit/provider/package/aptrpm_spec.rb +2 -2
  484. data/spec/unit/provider/package/dpkg_spec.rb +274 -99
  485. data/spec/unit/provider/package/openbsd_spec.rb +84 -1
  486. data/spec/unit/provider/package/opkg_spec.rb +3 -3
  487. data/spec/unit/provider/package/pip_spec.rb +16 -0
  488. data/spec/unit/provider/package/pkgdmg_spec.rb +62 -7
  489. data/spec/unit/provider/package/rpm_spec.rb +112 -21
  490. data/spec/unit/provider/package/urpmi.rb +80 -0
  491. data/spec/unit/provider/package/windows/exe_package_spec.rb +1 -1
  492. data/spec/unit/provider/package/yum_spec.rb +85 -0
  493. data/spec/unit/provider/package/zypper_spec.rb +25 -6
  494. data/spec/unit/provider/parsedfile_spec.rb +3 -2
  495. data/spec/unit/provider/service/init_spec.rb +10 -10
  496. data/spec/unit/provider/service/openrc_spec.rb +16 -0
  497. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  498. data/spec/unit/provider/service/redhat_spec.rb +7 -0
  499. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +2 -2
  500. data/spec/unit/provider/user/aix_spec.rb +89 -0
  501. data/spec/unit/provider/user/directoryservice_spec.rb +11 -4
  502. data/spec/unit/provider/user/user_role_add_spec.rb +18 -0
  503. data/spec/unit/provider_spec.rb +2 -13
  504. data/spec/unit/reports/http_spec.rb +1 -1
  505. data/spec/unit/resource/catalog_spec.rb +23 -97
  506. data/spec/unit/resource/resource_type.json +34 -0
  507. data/spec/unit/resource/status_spec.rb +56 -0
  508. data/spec/unit/resource/type_collection_spec.rb +6 -6
  509. data/spec/unit/resource/type_spec.rb +25 -5
  510. data/spec/unit/resource_spec.rb +68 -24
  511. data/spec/unit/run_spec.rb +16 -0
  512. data/spec/unit/scheduler/scheduler_spec.rb +14 -27
  513. data/spec/unit/semver_spec.rb +5 -0
  514. data/spec/unit/settings/enum_setting_spec.rb +27 -0
  515. data/spec/unit/settings_spec.rb +53 -44
  516. data/spec/unit/ssl/certificate_authority_spec.rb +155 -19
  517. data/spec/unit/transaction/additional_resource_generator_spec.rb +419 -0
  518. data/spec/unit/transaction/event_manager_spec.rb +2 -2
  519. data/spec/unit/transaction/event_spec.rb +57 -0
  520. data/spec/unit/transaction/report_spec.rb +66 -0
  521. data/spec/unit/transaction/resource_harness_spec.rb +27 -20
  522. data/spec/unit/transaction_spec.rb +182 -390
  523. data/spec/unit/type/augeas_spec.rb +3 -3
  524. data/spec/unit/type/component_spec.rb +0 -9
  525. data/spec/unit/type/computer_spec.rb +1 -1
  526. data/spec/unit/type/cron_spec.rb +2 -2
  527. data/spec/unit/type/exec_spec.rb +4 -2
  528. data/spec/unit/type/file/content_spec.rb +11 -0
  529. data/spec/unit/type/file/group_spec.rb +1 -1
  530. data/spec/unit/type/file_spec.rb +16 -8
  531. data/spec/unit/type/mount_spec.rb +445 -259
  532. data/spec/unit/type/package_spec.rb +4 -4
  533. data/spec/unit/type/resources_spec.rb +30 -1
  534. data/spec/unit/type/user_spec.rb +26 -3
  535. data/spec/unit/type/yumrepo_spec.rb +7 -27
  536. data/spec/unit/type/zone_spec.rb +4 -1
  537. data/spec/unit/type_spec.rb +66 -33
  538. data/spec/unit/util/backups_spec.rb +3 -3
  539. data/spec/unit/util/http_proxy_spec.rb +83 -0
  540. data/spec/unit/util/log_spec.rb +79 -8
  541. data/spec/unit/util/metric_spec.rb +12 -0
  542. data/spec/unit/util/monkey_patches_spec.rb +6 -0
  543. data/spec/unit/util/network_device/config_spec.rb +26 -64
  544. data/spec/unit/util/pidlock_spec.rb +4 -1
  545. data/spec/unit/util/tagging_spec.rb +5 -9
  546. data/spec/unit/util/warnings_spec.rb +1 -1
  547. data/spec/unit/util/watched_file_spec.rb +52 -0
  548. data/spec/unit/util/watcher/periodic_watcher_spec.rb +52 -0
  549. data/spec/unit/util/watcher_spec.rb +56 -0
  550. data/spec/unit/util_spec.rb +16 -0
  551. metadata +2767 -2576
  552. data/ext/debian/puppet.manpages +0 -32
  553. data/ext/osx/PackageInfo.plist +0 -36
  554. data/ext/osx/createpackage.sh +0 -187
  555. data/ext/redhat/rundir-perms.patch +0 -28
  556. data/lib/puppet/external/base64.rb +0 -19
  557. data/lib/puppet/util/graph.rb +0 -27
  558. data/lib/puppet/util/loadedfile.rb +0 -61
  559. data/lib/puppet/util/log_paths.rb +0 -22
  560. data/lib/puppet/util/subclass_loader.rb +0 -78
  561. data/spec/monkey_patches/publicize_methods.rb +0 -11
  562. data/spec/unit/util/loadedfile_spec.rb +0 -71
@@ -74,7 +74,7 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
74
74
  end
75
75
  end
76
76
 
77
- output = yum "-d", "0", "-e", "0", "-y", operation, wanted
77
+ yum "-d", "0", "-e", "0", "-y", operation, wanted
78
78
 
79
79
  is = self.query
80
80
  raise Puppet::Error, "Could not find package #{self.name}" unless is
@@ -1,7 +1,7 @@
1
1
  Puppet::Type.type(:package).provide :zypper, :parent => :rpm do
2
2
  desc "Support for SuSE `zypper` package manager. Found in SLES10sp2+ and SLES11"
3
3
 
4
- has_feature :versionable
4
+ has_feature :versionable, :install_options
5
5
 
6
6
  commands :zypper => "/usr/bin/zypper"
7
7
 
@@ -51,9 +51,9 @@ Puppet::Type.type(:package).provide :zypper, :parent => :rpm do
51
51
 
52
52
  #zypper 0.6.13 (OpenSuSE 10.2) does not support auto agree with licenses
53
53
  if major < 1 and minor <= 6 and patch <= 13
54
- zypper quiet, :install, noconfirm, wanted
54
+ zypper quiet, :install, noconfirm, install_options, wanted
55
55
  else
56
- zypper quiet, :install, license, noconfirm, wanted
56
+ zypper quiet, :install, license, noconfirm, install_options, wanted
57
57
  end
58
58
 
59
59
  unless self.query
@@ -81,4 +81,23 @@ Puppet::Type.type(:package).provide :zypper, :parent => :rpm do
81
81
  # zypper install can be used for update, too
82
82
  self.install
83
83
  end
84
+
85
+ def install_options
86
+ join_options(resource[:install_options])
87
+ end
88
+
89
+ def join_options(options)
90
+ return unless options
91
+
92
+ options.collect do |val|
93
+ case val
94
+ when Hash
95
+ val.keys.sort.collect do |k|
96
+ "#{k} '#{val[k]}'"
97
+ end.join(' ')
98
+ else
99
+ val
100
+ end
101
+ end
102
+ end
84
103
  end
@@ -160,15 +160,6 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
160
160
  [resource_type.validproperties, resource_type.parameters].flatten.each do |attr|
161
161
  attr = attr.intern
162
162
  define_method(attr) do
163
- # if @property_hash.empty?
164
- # # Note that this swaps the provider out from under us.
165
- # prefetch
166
- # if @resource.provider == self
167
- # return @property_hash[attr]
168
- # else
169
- # return @resource.provider.send(attr)
170
- # end
171
- # end
172
163
  # If it's not a valid field for this record type (which can happen
173
164
  # when different platforms support different fields), then just
174
165
  # return the should value, so the resource shuts up.
@@ -416,8 +407,6 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
416
407
  end
417
408
 
418
409
  self.class.flush(@property_hash)
419
-
420
- #@property_hash = {}
421
410
  end
422
411
 
423
412
  def initialize(record)
@@ -425,7 +414,7 @@ class Puppet::Provider::ParsedFile < Puppet::Provider
425
414
 
426
415
  # The 'record' could be a resource or a record, depending on how the provider
427
416
  # is initialized. If we got an empty property hash (probably because the resource
428
- # is just being initialized), then we want to set up some defualts.
417
+ # is just being initialized), then we want to set up some defaults.
429
418
  @property_hash = self.class.record?(resource[:name]) || {:record_type => self.class.name, :ensure => :absent} if @property_hash.empty?
430
419
  end
431
420
 
@@ -74,7 +74,7 @@ Puppet::Type.type(:scheduled_task).provide(:win32_taskscheduler) do
74
74
  task.trigger_count.times do |i|
75
75
  trigger = begin
76
76
  task.trigger(i)
77
- rescue Win32::TaskScheduler::Error => e
77
+ rescue Win32::TaskScheduler::Error
78
78
  # Win32::TaskScheduler can't handle all of the
79
79
  # trigger types Windows uses, so we need to skip the
80
80
  # unhandled types to prevent "puppet resource" from
@@ -92,7 +92,7 @@ Puppet::Type.type(:service).provide :base, :parent => :service do
92
92
  end
93
93
  begin
94
94
  output = kill pid
95
- rescue Puppet::ExecutionFailure => detail
95
+ rescue Puppet::ExecutionFailure
96
96
  @resource.fail "Could not kill #{self.name}, PID #{pid}: #{output}"
97
97
  end
98
98
  return true
@@ -129,7 +129,7 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
129
129
  Puppet.notice "Configuring #{resource[:name]}"
130
130
  command = [ resource[:manifest], resource[:name] ]
131
131
  #texecute("setupservice", command)
132
- rv = system("#{command}")
132
+ system("#{command}")
133
133
  end
134
134
  rescue Puppet::ExecutionFailure => detail
135
135
  raise Puppet::Error.new( "Cannot config #{self.service} to enable it: #{detail}" )
@@ -157,7 +157,7 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
157
157
  File.symlink(self.daemon, self.service)
158
158
  end
159
159
  end
160
- rescue Puppet::ExecutionFailure => detail
160
+ rescue Puppet::ExecutionFailure
161
161
  raise Puppet::Error.new( "No daemon directory found for #{self.service}")
162
162
  end
163
163
 
@@ -173,7 +173,7 @@ Puppet::Type.type(:service).provide :daemontools, :parent => :base do
173
173
  File.unlink(self.service)
174
174
  end
175
175
  end
176
- rescue Puppet::ExecutionFailure => detail
176
+ rescue Puppet::ExecutionFailure
177
177
  raise Puppet::Error.new( "No daemon directory found for #{self.service}")
178
178
  end
179
179
  self.stop
@@ -54,7 +54,7 @@ Puppet::Type.type(:service).provide :debian, :parent => :init do
54
54
  end
55
55
 
56
56
  def get_start_link_count
57
- Dir.glob("/etc/rc*.d/S*#{@resource[:name]}").length
57
+ Dir.glob("/etc/rc*.d/S??#{@resource[:name]}").length
58
58
  end
59
59
 
60
60
  def enable
@@ -43,6 +43,10 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
43
43
  excludes += %w{wait-for-state portmap-wait}
44
44
  # these excludes were found with grep -r -L start /etc/init.d
45
45
  excludes += %w{rcS module-init-tools}
46
+ # Prevent puppet failing to get status of the new service introduced
47
+ # by the fix for this (bug https://bugs.launchpad.net/ubuntu/+source/lightdm/+bug/982889)
48
+ # due to puppet's inability to deal with upstart services with instances.
49
+ excludes += %w{plymouth-ready}
46
50
  end
47
51
 
48
52
  # List all services of this type.
@@ -106,33 +110,23 @@ Puppet::Type.type(:service).provide :init, :parent => :base do
106
110
  end
107
111
 
108
112
  def search(name)
109
- paths.each { |path|
113
+ paths.each do |path|
110
114
  fqname = File.join(path,name)
111
- begin
112
- stat = File.stat(fqname)
113
- rescue
114
- # should probably rescue specific errors...
115
+ if File.exist? fqname
116
+ return fqname
117
+ else
115
118
  self.debug("Could not find #{name} in #{path}")
116
- next
117
119
  end
120
+ end
118
121
 
119
- # if we've gotten this far, we found a valid script
120
- return fqname
121
- }
122
-
123
- paths.each { |path|
122
+ paths.each do |path|
124
123
  fqname_sh = File.join(path,"#{name}.sh")
125
- begin
126
- stat = File.stat(fqname_sh)
127
- rescue
128
- # should probably rescue specific errors...
124
+ if File.exist? fqname_sh
125
+ return fqname_sh
126
+ else
129
127
  self.debug("Could not find #{name}.sh in #{path}")
130
- next
131
128
  end
132
-
133
- # if we've gotten this far, we found a valid script
134
- return fqname_sh
135
- }
129
+ end
136
130
  raise Puppet::Error, "Could not find init script for '#{name}'"
137
131
  end
138
132
 
@@ -10,8 +10,10 @@ Puppet::Type.type(:service).provide :openrc, :parent => :base do
10
10
  defaultfor :operatingsystem => :gentoo
11
11
  defaultfor :operatingsystem => :funtoo
12
12
 
13
+ has_command(:rcstatus, '/bin/rc-status') do
14
+ environment :RC_SVCNAME => nil
15
+ end
13
16
  commands :rcservice => '/sbin/rc-service'
14
- commands :rcstatus => '/bin/rc-status'
15
17
  commands :rcupdate => '/sbin/rc-update'
16
18
 
17
19
  self::STATUSLINE = /^\s+(.*?)\s*\[\s*(.*)\s*\]$/
@@ -21,25 +21,22 @@ Puppet::Type.type(:service).provide :redhat, :parent => :init, :source => :init
21
21
  end
22
22
 
23
23
  def enabled?
24
+ # Checkconfig always returns 0 on SuSE unless the --check flag is used.
25
+ args = (Facter.value(:osfamily) == 'Suse' ? ['--check'] : [])
26
+
24
27
  begin
25
- output = chkconfig(@resource[:name])
28
+ chkconfig(@resource[:name], *args)
26
29
  rescue Puppet::ExecutionFailure
27
30
  return :false
28
31
  end
29
32
 
30
- # If it's disabled on SuSE, then it will print output showing "off"
31
- # at the end
32
- if output =~ /.* off$/
33
- return :false
34
- end
35
-
36
33
  :true
37
34
  end
38
35
 
39
36
  # Don't support them specifying runlevels; always use the runlevels
40
37
  # in the init scripts.
41
38
  def enable
42
- output = chkconfig(@resource[:name], :on)
39
+ chkconfig(@resource[:name], :on)
43
40
  rescue Puppet::ExecutionFailure => detail
44
41
  raise Puppet::Error, "Could not enable #{self.name}: #{detail}"
45
42
  end
@@ -9,12 +9,13 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
9
9
  When detecting the service directory it will check, in order of preference:
10
10
 
11
11
  * `/service`
12
- * `/var/service`
13
12
  * `/etc/service`
13
+ * `/var/service`
14
14
 
15
15
  The daemon directory should be in one of the following locations:
16
16
 
17
17
  * `/etc/sv`
18
+ * `/var/lib/service`
18
19
 
19
20
  or this can be overriden in the service resource parameters::
20
21
 
@@ -46,7 +47,7 @@ Puppet::Type.type(:service).provide :runit, :parent => :daemontools do
46
47
  break
47
48
  end
48
49
  end
49
- raise "Could not find the daemon directory (tested [/var/lib/service,/etc])" unless @defpath
50
+ raise "Could not find the daemon directory (tested [/etc/sv,/var/lib/service])" unless @defpath
50
51
  end
51
52
  @defpath
52
53
  end
@@ -37,7 +37,7 @@ Puppet::Type.type(:service).provide :systemd, :parent => :base do
37
37
 
38
38
  def status
39
39
  begin
40
- output = systemctl("is-active", @resource[:name])
40
+ systemctl("is-active", @resource[:name])
41
41
  rescue Puppet::ExecutionFailure
42
42
  return :stopped
43
43
  end
@@ -47,7 +47,7 @@ Puppet::Type.type(:ssh_authorized_key).provide(
47
47
 
48
48
  def flush
49
49
  raise Puppet::Error, "Cannot write SSH authorized keys without user" unless @resource.should(:user)
50
- raise Puppet::Error, "User '#{@resource.should(:user)}' does not exist" unless uid = Puppet::Util.uid(@resource.should(:user))
50
+ raise Puppet::Error, "User '#{@resource.should(:user)}' does not exist" unless Puppet::Util.uid(@resource.should(:user))
51
51
  # ParsedFile usually calls backup_target much later in the flush process,
52
52
  # but our SUID makes that fail to open filebucket files for writing.
53
53
  # Fortunately, there's already logic to make sure it only ever happens once,
@@ -27,8 +27,6 @@ Puppet::Type.type(:sshkey).provide(
27
27
  },
28
28
  :pre_gen => proc { |hash|
29
29
  if hash[:host_aliases]
30
- names = [hash[:name], hash[:host_aliases]].flatten
31
-
32
30
  hash[:name] = [hash[:name], hash[:host_aliases]].flatten.join(",")
33
31
  hash.delete(:host_aliases)
34
32
  end
@@ -38,7 +38,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
38
38
  has_features :manages_expiry, :manages_password_age
39
39
 
40
40
  # Attribute verification (TODO)
41
- #verify :gid, "GID must be an string or int of a valid group" do |value|
41
+ #verify :gid, "GID must be a string or int of a valid group" do |value|
42
42
  # value.is_a? String || value.is_a? Integer
43
43
  #end
44
44
  #
@@ -48,7 +48,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
48
48
 
49
49
  # User attributes to ignore from AIX output.
50
50
  def self.attribute_ignore
51
- []
51
+ ["name"]
52
52
  end
53
53
 
54
54
  # AIX attributes to properties mapping.
@@ -60,19 +60,20 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
60
60
  # :to Method to adapt puppet property to aix command value. Optional.
61
61
  # :from Method to adapt aix command value to puppet property. Optional
62
62
  self.attribute_mapping = [
63
- #:name => :name,
64
63
  {:aix_attr => :pgrp, :puppet_prop => :gid,
65
- :to => :gid_to_attr, :from => :gid_from_attr},
64
+ :to => :gid_to_attr,
65
+ :from => :gid_from_attr },
66
66
  {:aix_attr => :id, :puppet_prop => :uid},
67
67
  {:aix_attr => :groups, :puppet_prop => :groups},
68
68
  {:aix_attr => :home, :puppet_prop => :home},
69
69
  {:aix_attr => :shell, :puppet_prop => :shell},
70
70
  {:aix_attr => :expires, :puppet_prop => :expiry,
71
- :to => :expiry_to_attr, :from => :expiry_from_attr},
71
+ :to => :expiry_to_attr,
72
+ :from => :expiry_from_attr },
72
73
  {:aix_attr => :maxage, :puppet_prop => :password_max_age},
73
74
  {:aix_attr => :minage, :puppet_prop => :password_min_age},
74
75
  {:aix_attr => :attributes, :puppet_prop => :attributes},
75
- {:aix_attr => :gecos, :puppet_prop => :comment},
76
+ { :aix_attr => :gecos, :puppet_prop => :comment },
76
77
  ]
77
78
 
78
79
  #--------------
@@ -140,7 +141,7 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
140
141
  if key == :attributes
141
142
  raise Puppet::Error, "Attributes must be a list of pairs key=value on #{@resource.class.name}[#{@resource.name}]" \
142
143
  unless value and value.is_a? Hash
143
- return value.select { |k,v| true }.map { |pair| pair.join("=") }
144
+ return value.map { |k,v| k.to_s.strip + "=" + v.to_s.strip}
144
145
  end
145
146
 
146
147
  super(key, value, mapping, objectinfo)
@@ -271,18 +272,30 @@ Puppet::Type.type(:user).provide :aix, :parent => Puppet::Provider::AixObject do
271
272
  end
272
273
  end
273
274
 
275
+ def managed_attribute_keys(hash)
276
+ managed_attributes ||= @resource.original_parameters[:attributes] || hash.keys.map{|k| k.to_s}
277
+ managed_attributes.map {|attr| key, value = attr.split("="); key.strip.to_sym}
278
+ end
279
+
280
+ def should_include?(key, managed_keys)
281
+ !self.class.attribute_mapping_from.include?(key) and
282
+ !self.class.attribute_ignore.include?(key) and
283
+ managed_keys.include?(key)
284
+ end
285
+
274
286
  def filter_attributes(hash)
275
- # Return only not managed attributtes.
276
- hash.select {
277
- |k,v| !self.class.attribute_mapping_from.include?(k) and
278
- !self.class.attribute_ignore.include?(k)
287
+ # Return only managed attributtes.
288
+ managed_keys = managed_attribute_keys(hash)
289
+ results = hash.select {
290
+ |k,v| should_include?(k, managed_keys)
279
291
  }.inject({}) {
280
292
  |hash, array| hash[array[0]] = array[1]; hash
281
293
  }
294
+ results
282
295
  end
283
296
 
284
297
  def attributes
285
- filter_attributes(getosinfo(refresh = false))
298
+ filter_attributes(getosinfo(false))
286
299
  end
287
300
 
288
301
  def attributes=(attr_hash)
@@ -188,7 +188,7 @@ Puppet::Type.type(:user).provide :directoryservice do
188
188
  def self.convert_xml_to_binary(plist_data)
189
189
  Puppet.debug('Converting XML plist to binary')
190
190
  Puppet.debug('Executing: \'plutil -convert binary1 -o - -\'')
191
- IO.popen('plutil -convert binary1 -o - -', mode='r+') do |io|
191
+ IO.popen('plutil -convert binary1 -o - -', 'r+') do |io|
192
192
  io.write Plist::Emit.dump(plist_data)
193
193
  io.close_write
194
194
  @converted_plist = io.read
@@ -201,7 +201,7 @@ Puppet::Type.type(:user).provide :directoryservice do
201
201
  def self.convert_binary_to_xml(plist_data)
202
202
  Puppet.debug('Converting binary plist to XML')
203
203
  Puppet.debug('Executing: \'plutil -convert xml1 -o - -\'')
204
- IO.popen('plutil -convert xml1 -o - -', mode='r+') do |io|
204
+ IO.popen('plutil -convert xml1 -o - -', 'r+') do |io|
205
205
  io.write plist_data
206
206
  io.close_write
207
207
  @converted_plist = io.read
@@ -297,11 +297,8 @@ Puppet::Type.type(:user).provide :directoryservice do
297
297
  end
298
298
  end
299
299
 
300
- # If a non-numerical gid value is passed, assume it is a group name and
301
- # lookup that group's GID value to use when setting the GID
302
- if (attribute == :gid) and value.class == 'Fixnum'
303
- value = self.class.get_attribute_from_dscl('Groups', value, 'PrimaryGroupID')['dsAttrTypeStandard:PrimaryGroupID'][0]
304
- end
300
+ # Ensure group names are converted to integers.
301
+ value = Puppet::Util.gid(value) if attribute == :gid
305
302
 
306
303
  ## Set values ##
307
304
  # For the :password and :groups properties, call the setter methods
@@ -27,7 +27,6 @@ Puppet::Type.type(:user).provide :ldap, :parent => Puppet::Provider::Ldap do
27
27
  # Use the last field of a space-separated array as
28
28
  # the sn. LDAP requires a surname, for some stupid reason.
29
29
  manager.generates(:sn).from(:cn).with do |cn|
30
- x = 1
31
30
  cn[0].split(/\s+/)[-1]
32
31
  end
33
32
 
@@ -1,5 +1,6 @@
1
1
  require 'puppet/util'
2
2
  require 'puppet/util/user_attr'
3
+ require 'date'
3
4
 
4
5
  Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source => :useradd do
5
6
 
@@ -195,6 +196,7 @@ Puppet::Type.type(:user).provide :user_role_add, :parent => :useradd, :source =>
195
196
  line_arr = line.split(':')
196
197
  if line_arr[0] == @resource[:name]
197
198
  line_arr[1] = cryptopw
199
+ line_arr[2] = (Date.today - Date.new(1970,1,1)).to_i.to_s
198
200
  line = line_arr.join(':')
199
201
  end
200
202
  fh.print line
@@ -71,7 +71,7 @@ Puppet::Type.type(:user).provide :useradd, :parent => Puppet::Provider::NameServ
71
71
  end
72
72
 
73
73
  def local_username
74
- user = finduser('uid', @resource.uid)
74
+ finduser('uid', @resource.uid)
75
75
  end
76
76
 
77
77
  def localuid