puppet 3.1.1 → 3.2.0.rc1

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 (477) hide show
  1. data/CONTRIBUTING.md +2 -2
  2. data/Gemfile +32 -19
  3. data/README_DEVELOPER.md +332 -14
  4. data/Rakefile +9 -5
  5. data/ext/build_defaults.yaml +2 -3
  6. data/ext/debian/changelog.erb +6 -0
  7. data/ext/debian/control +6 -6
  8. data/ext/envpuppet +4 -4
  9. data/ext/project_data.yaml +1 -0
  10. data/ext/puppet-nm-dispatcher +13 -0
  11. data/ext/redhat/puppet.spec.erb +17 -0
  12. data/ext/suse/client.init +1 -1
  13. data/ext/systemd/puppetagent.service +2 -2
  14. data/ext/systemd/puppetmaster.service +2 -2
  15. data/lib/hiera/scope.rb +29 -11
  16. data/lib/hiera_puppet.rb +1 -3
  17. data/lib/puppet/agent.rb +3 -3
  18. data/lib/puppet/application.rb +2 -2
  19. data/lib/puppet/application/agent.rb +27 -12
  20. data/lib/puppet/application/apply.rb +11 -1
  21. data/lib/puppet/application/describe.rb +1 -1
  22. data/lib/puppet/application/doc.rb +13 -9
  23. data/lib/puppet/application/filebucket.rb +0 -1
  24. data/lib/puppet/application/kick.rb +1 -0
  25. data/lib/puppet/application/master.rb +16 -8
  26. data/lib/puppet/daemon.rb +19 -64
  27. data/lib/puppet/defaults.rb +61 -5
  28. data/lib/puppet/error.rb +15 -4
  29. data/lib/puppet/external/nagios/grammar.ry +1 -1
  30. data/lib/puppet/external/nagios/makefile +1 -1
  31. data/lib/puppet/external/nagios/parser.rb +185 -618
  32. data/lib/puppet/external/pson/pure/parser.rb +47 -1
  33. data/lib/puppet/face/certificate.rb +3 -3
  34. data/lib/puppet/face/module.rb +1 -1
  35. data/lib/puppet/face/module/changes.rb +3 -1
  36. data/lib/puppet/face/module/uninstall.rb +1 -1
  37. data/lib/puppet/face/node/clean.rb +5 -5
  38. data/lib/puppet/feature/base.rb +3 -1
  39. data/lib/puppet/feature/libuser.rb +8 -0
  40. data/lib/puppet/file_serving/fileset.rb +9 -1
  41. data/lib/puppet/forge.rb +28 -5
  42. data/lib/puppet/forge/errors.rb +34 -0
  43. data/lib/puppet/forge/repository.rb +1 -1
  44. data/lib/puppet/indirector.rb +4 -1
  45. data/lib/puppet/indirector/catalog/compiler.rb +37 -30
  46. data/lib/puppet/indirector/facts/inventory_active_record.rb +1 -0
  47. data/lib/puppet/indirector/indirection.rb +28 -15
  48. data/lib/puppet/indirector/rest.rb +18 -10
  49. data/lib/puppet/interface.rb +11 -4
  50. data/lib/puppet/interface/action.rb +1 -3
  51. data/lib/puppet/interface/action_builder.rb +0 -3
  52. data/lib/puppet/interface/action_manager.rb +0 -3
  53. data/lib/puppet/interface/face_collection.rb +0 -2
  54. data/lib/puppet/interface/option.rb +0 -2
  55. data/lib/puppet/interface/option_builder.rb +0 -2
  56. data/lib/puppet/interface/option_manager.rb +0 -2
  57. data/lib/puppet/metatype/manager.rb +1 -1
  58. data/lib/puppet/module_tool.rb +1 -0
  59. data/lib/puppet/module_tool/applications/application.rb +0 -3
  60. data/lib/puppet/module_tool/applications/builder.rb +8 -20
  61. data/lib/puppet/module_tool/applications/checksummer.rb +1 -1
  62. data/lib/puppet/module_tool/applications/installer.rb +1 -0
  63. data/lib/puppet/module_tool/applications/unpacker.rb +3 -11
  64. data/lib/puppet/module_tool/checksums.rb +1 -1
  65. data/lib/puppet/module_tool/errors/installer.rb +18 -1
  66. data/lib/puppet/module_tool/modulefile.rb +2 -2
  67. data/lib/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +1 -1
  68. data/lib/puppet/module_tool/tar.rb +17 -0
  69. data/lib/puppet/module_tool/tar/gnu.rb +9 -0
  70. data/lib/puppet/module_tool/tar/mini.rb +39 -0
  71. data/lib/puppet/module_tool/tar/solaris.rb +5 -0
  72. data/lib/puppet/network/http.rb +1 -0
  73. data/lib/puppet/network/http/connection.rb +9 -23
  74. data/lib/puppet/network/http/handler.rb +38 -7
  75. data/lib/puppet/network/http/rack/rest.rb +14 -3
  76. data/lib/puppet/network/http/webrick.rb +3 -1
  77. data/lib/puppet/network/http/webrick/rest.rb +11 -2
  78. data/lib/puppet/node/environment.rb +3 -1
  79. data/lib/puppet/parameter.rb +32 -29
  80. data/lib/puppet/parameter/package_options.rb +1 -1
  81. data/lib/puppet/parameter/path.rb +1 -1
  82. data/lib/puppet/parameter/value.rb +1 -1
  83. data/lib/puppet/parameter/value_collection.rb +7 -3
  84. data/lib/puppet/parser/ast.rb +3 -1
  85. data/lib/puppet/parser/ast/arithmetic_operator.rb +56 -12
  86. data/lib/puppet/parser/ast/astarray.rb +1 -1
  87. data/lib/puppet/parser/ast/block_expression.rb +41 -0
  88. data/lib/puppet/parser/ast/function.rb +13 -2
  89. data/lib/puppet/parser/ast/lambda.rb +107 -0
  90. data/lib/puppet/parser/ast/leaf.rb +1 -2
  91. data/lib/puppet/parser/ast/method_call.rb +77 -0
  92. data/lib/puppet/parser/ast/vardef.rb +7 -0
  93. data/lib/puppet/parser/compiler.rb +27 -16
  94. data/lib/puppet/parser/e_parser_adapter.rb +120 -0
  95. data/lib/puppet/parser/files.rb +7 -6
  96. data/lib/puppet/parser/functions.rb +10 -8
  97. data/lib/puppet/parser/functions/collect.rb +43 -0
  98. data/lib/puppet/parser/functions/each.rb +96 -0
  99. data/lib/puppet/parser/functions/foreach.rb +96 -0
  100. data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
  101. data/lib/puppet/parser/functions/hiera.rb +20 -2
  102. data/lib/puppet/parser/functions/hiera_array.rb +21 -2
  103. data/lib/puppet/parser/functions/hiera_hash.rb +23 -2
  104. data/lib/puppet/parser/functions/hiera_include.rb +33 -2
  105. data/lib/puppet/parser/functions/inline_template.rb +4 -4
  106. data/lib/puppet/parser/functions/reduce.rb +74 -0
  107. data/lib/puppet/parser/functions/reject.rb +46 -0
  108. data/lib/puppet/parser/functions/select.rb +46 -0
  109. data/lib/puppet/parser/functions/slice.rb +96 -0
  110. data/lib/puppet/parser/functions/template.rb +2 -2
  111. data/lib/puppet/parser/grammar.ra +7 -4
  112. data/lib/puppet/parser/lexer.rb +10 -0
  113. data/lib/puppet/parser/methods.rb +69 -0
  114. data/lib/puppet/parser/parser.rb +855 -808
  115. data/lib/puppet/parser/parser_factory.rb +62 -0
  116. data/lib/puppet/parser/parser_support.rb +8 -2
  117. data/lib/puppet/parser/scope.rb +153 -47
  118. data/lib/puppet/parser/templatewrapper.rb +28 -21
  119. data/lib/puppet/parser/type_loader.rb +3 -1
  120. data/lib/puppet/pops.rb +40 -0
  121. data/lib/puppet/pops/adaptable.rb +190 -0
  122. data/lib/puppet/pops/adapters.rb +65 -0
  123. data/lib/puppet/pops/containment.rb +37 -0
  124. data/lib/puppet/pops/issues.rb +258 -0
  125. data/lib/puppet/pops/label_provider.rb +71 -0
  126. data/lib/puppet/pops/model/ast_transformer.rb +636 -0
  127. data/lib/puppet/pops/model/ast_tree_dumper.rb +378 -0
  128. data/lib/puppet/pops/model/factory.rb +804 -0
  129. data/lib/puppet/pops/model/model.rb +567 -0
  130. data/lib/puppet/pops/model/model_label_provider.rb +75 -0
  131. data/lib/puppet/pops/model/model_tree_dumper.rb +352 -0
  132. data/lib/puppet/pops/model/tree_dumper.rb +59 -0
  133. data/lib/puppet/pops/parser/egrammar.ra +723 -0
  134. data/lib/puppet/pops/parser/eparser.rb +2300 -0
  135. data/lib/puppet/pops/parser/grammar.ra +746 -0
  136. data/lib/puppet/pops/parser/lexer.rb +842 -0
  137. data/lib/puppet/pops/parser/makefile +13 -0
  138. data/lib/puppet/pops/parser/parser_support.rb +203 -0
  139. data/lib/puppet/pops/patterns.rb +35 -0
  140. data/lib/puppet/pops/utils.rb +104 -0
  141. data/lib/puppet/pops/validation.rb +297 -0
  142. data/lib/puppet/pops/validation/checker3_1.rb +551 -0
  143. data/lib/puppet/pops/validation/validator_factory_3_1.rb +41 -0
  144. data/lib/puppet/pops/visitable.rb +6 -0
  145. data/lib/puppet/pops/visitor.rb +50 -0
  146. data/lib/puppet/property.rb +37 -28
  147. data/lib/puppet/property/ensure.rb +2 -2
  148. data/lib/puppet/property/ordered_list.rb +1 -1
  149. data/lib/puppet/provider.rb +26 -30
  150. data/lib/puppet/provider/aixobject.rb +45 -44
  151. data/lib/puppet/provider/augeas/augeas.rb +0 -1
  152. data/lib/puppet/provider/confiner.rb +1 -1
  153. data/lib/puppet/provider/cron/crontab.rb +107 -67
  154. data/lib/puppet/provider/group/groupadd.rb +59 -3
  155. data/lib/puppet/provider/interface/cisco.rb +4 -4
  156. data/lib/puppet/provider/mount/parsed.rb +1 -1
  157. data/lib/puppet/provider/nameservice.rb +22 -6
  158. data/lib/puppet/provider/nameservice/pw.rb +1 -1
  159. data/lib/puppet/provider/package/aix.rb +28 -4
  160. data/lib/puppet/provider/package/gem.rb +0 -2
  161. data/lib/puppet/provider/package/macports.rb +1 -1
  162. data/lib/puppet/provider/package/nim.rb +249 -4
  163. data/lib/puppet/provider/package/opkg.rb +77 -0
  164. data/lib/puppet/provider/package/pacman.rb +2 -2
  165. data/lib/puppet/provider/package/rpm.rb +30 -16
  166. data/lib/puppet/provider/package/yum.rb +3 -3
  167. data/lib/puppet/provider/parsedfile.rb +80 -3
  168. data/lib/puppet/provider/selmodule/semodule.rb +2 -2
  169. data/lib/puppet/provider/service/debian.rb +0 -4
  170. data/lib/puppet/provider/service/freebsd.rb +2 -2
  171. data/lib/puppet/provider/service/gentoo.rb +0 -9
  172. data/lib/puppet/provider/service/init.rb +27 -2
  173. data/lib/puppet/provider/service/launchd.rb +1 -1
  174. data/lib/puppet/provider/service/openwrt.rb +36 -0
  175. data/lib/puppet/provider/service/redhat.rb +0 -9
  176. data/lib/puppet/provider/service/src.rb +38 -4
  177. data/lib/puppet/provider/service/systemd.rb +2 -2
  178. data/lib/puppet/provider/service/upstart.rb +1 -8
  179. data/lib/puppet/provider/user/aix.rb +4 -10
  180. data/lib/puppet/provider/user/pw.rb +6 -10
  181. data/lib/puppet/provider/user/useradd.rb +129 -31
  182. data/lib/puppet/provider/vlan/cisco.rb +4 -4
  183. data/lib/puppet/reference/function.rb +2 -2
  184. data/lib/puppet/reference/indirection.rb +46 -5
  185. data/lib/puppet/reference/metaparameter.rb +2 -2
  186. data/lib/puppet/reports.rb +5 -5
  187. data/lib/puppet/reports/rrdgraph.rb +4 -4
  188. data/lib/puppet/reports/tagmail.rb +1 -1
  189. data/lib/puppet/resource.rb +1 -1
  190. data/lib/puppet/resource/type.rb +13 -11
  191. data/lib/puppet/scheduler.rb +16 -0
  192. data/lib/puppet/scheduler/job.rb +53 -0
  193. data/lib/puppet/scheduler/scheduler.rb +45 -0
  194. data/lib/puppet/scheduler/splay_job.rb +32 -0
  195. data/lib/puppet/scheduler/timer.rb +13 -0
  196. data/lib/puppet/settings/base_setting.rb +1 -1
  197. data/lib/puppet/simple_graph.rb +4 -4
  198. data/lib/puppet/ssl/base.rb +12 -2
  199. data/lib/puppet/ssl/certificate.rb +4 -1
  200. data/lib/puppet/ssl/certificate_request.rb +4 -1
  201. data/lib/puppet/ssl/certificate_revocation_list.rb +4 -1
  202. data/lib/puppet/ssl/configuration.rb +32 -0
  203. data/lib/puppet/ssl/host.rb +18 -21
  204. data/lib/puppet/ssl/key.rb +4 -1
  205. data/lib/puppet/ssl/validator.rb +116 -0
  206. data/lib/puppet/transaction.rb +1 -1
  207. data/lib/puppet/transaction/event.rb +3 -10
  208. data/lib/puppet/transaction/event_manager.rb +8 -1
  209. data/lib/puppet/transaction/report.rb +17 -16
  210. data/lib/puppet/type.rb +77 -69
  211. data/lib/puppet/type/cron.rb +20 -8
  212. data/lib/puppet/type/exec.rb +9 -3
  213. data/lib/puppet/type/file.rb +95 -21
  214. data/lib/puppet/type/file/content.rb +1 -1
  215. data/lib/puppet/type/file/mode.rb +7 -1
  216. data/lib/puppet/type/file/source.rb +2 -2
  217. data/lib/puppet/type/group.rb +11 -0
  218. data/lib/puppet/type/scheduled_task.rb +5 -1
  219. data/lib/puppet/type/service.rb +1 -1
  220. data/lib/puppet/type/ssh_authorized_key.rb +2 -2
  221. data/lib/puppet/type/user.rb +24 -6
  222. data/lib/puppet/util.rb +12 -2
  223. data/lib/puppet/util/classgen.rb +4 -4
  224. data/lib/puppet/util/colors.rb +55 -0
  225. data/lib/puppet/util/command_line/trollop.rb +4 -4
  226. data/lib/puppet/util/errors.rb +39 -3
  227. data/lib/puppet/util/fileparsing.rb +5 -0
  228. data/lib/puppet/util/filetype.rb +11 -9
  229. data/lib/puppet/util/instrumentation/instrumentable.rb +2 -2
  230. data/lib/puppet/util/libuser.conf +15 -0
  231. data/lib/puppet/util/libuser.rb +12 -0
  232. data/lib/puppet/util/monkey_patches.rb +48 -0
  233. data/lib/puppet/util/network_device.rb +1 -1
  234. data/lib/puppet/util/network_device/base.rb +2 -2
  235. data/lib/puppet/util/network_device/cisco/device.rb +29 -19
  236. data/lib/puppet/util/network_device/config.rb +5 -2
  237. data/lib/puppet/util/network_device/ipcalc.rb +1 -1
  238. data/lib/puppet/util/network_device/transport/ssh.rb +4 -3
  239. data/lib/puppet/util/network_device/transport/telnet.rb +4 -2
  240. data/lib/puppet/util/plugins.rb +4 -4
  241. data/lib/puppet/util/posix.rb +1 -1
  242. data/lib/puppet/util/profiler.rb +28 -0
  243. data/lib/puppet/util/profiler/logging.rb +47 -0
  244. data/lib/puppet/util/profiler/none.rb +8 -0
  245. data/lib/puppet/util/profiler/object_counts.rb +17 -0
  246. data/lib/puppet/util/profiler/wall_clock.rb +34 -0
  247. data/lib/puppet/util/provider_features.rb +1 -1
  248. data/lib/puppet/util/rdoc/parser.rb +5 -5
  249. data/lib/puppet/util/ssl.rb +38 -0
  250. data/lib/puppet/util/subclass_loader.rb +1 -5
  251. data/lib/puppet/util/windows.rb +1 -0
  252. data/lib/puppet/util/windows/process.rb +3 -0
  253. data/lib/puppet/util/windows/root_certs.rb +86 -0
  254. data/lib/puppet/util/windows/security.rb +1 -0
  255. data/lib/puppet/version.rb +1 -1
  256. data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +19 -0
  257. data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +18 -0
  258. data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +15 -0
  259. data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +4 -0
  260. data/spec/fixtures/integration/provider/cron/crontab/modify_entry +13 -0
  261. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +15 -0
  262. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +6 -0
  263. data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +12 -0
  264. data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +14 -0
  265. data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +16 -0
  266. data/spec/fixtures/unit/pops/parser/lexer/append.pp +11 -0
  267. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +14 -0
  268. data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +8 -0
  269. data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +3 -0
  270. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +65 -0
  271. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +15 -0
  272. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +17 -0
  273. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +11 -0
  274. data/spec/fixtures/unit/pops/parser/lexer/collection.pp +10 -0
  275. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +8 -0
  276. data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +20 -0
  277. data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +11 -0
  278. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +8 -0
  279. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +23 -0
  280. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +17 -0
  281. data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +9 -0
  282. data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +3 -0
  283. data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +9 -0
  284. data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +3 -0
  285. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +11 -0
  286. data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +5 -0
  287. data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +11 -0
  288. data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +5 -0
  289. data/spec/fixtures/unit/pops/parser/lexer/hash.pp +33 -0
  290. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +12 -0
  291. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +15 -0
  292. data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +10 -0
  293. data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +9 -0
  294. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +7 -0
  295. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +13 -0
  296. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +9 -0
  297. data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +13 -0
  298. data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +49 -0
  299. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +5 -0
  300. data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +38 -0
  301. data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +19 -0
  302. data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +11 -0
  303. data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +22 -0
  304. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +11 -0
  305. data/spec/fixtures/unit/pops/parser/lexer/tag.pp +9 -0
  306. data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +35 -0
  307. data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +14 -0
  308. data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +4 -4
  309. data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +3 -0
  310. data/spec/fixtures/unit/provider/cron/parsed/managed +6 -0
  311. data/spec/fixtures/unit/provider/cron/parsed/simple +9 -0
  312. data/spec/fixtures/unit/provider/parsedfile/simple.txt +4 -0
  313. data/spec/fixtures/unit/provider/service/systemd/list_units +18 -0
  314. data/spec/integration/parser/collector_spec.rb +1 -1
  315. data/spec/integration/parser/compiler_spec.rb +252 -227
  316. data/spec/integration/parser/parser_spec.rb +171 -53
  317. data/spec/integration/parser/scope_spec.rb +1 -1
  318. data/spec/integration/provider/cron/crontab_spec.rb +187 -0
  319. data/spec/integration/provider/service/systemd_spec.rb +20 -0
  320. data/spec/integration/type/file_spec.rb +21 -21
  321. data/spec/integration/type/package_spec.rb +1 -1
  322. data/spec/lib/puppet_spec/database.rb +2 -5
  323. data/spec/spec_helper.rb +6 -1
  324. data/spec/unit/application/apply_spec.rb +16 -1
  325. data/spec/unit/application/describe_spec.rb +1 -1
  326. data/spec/unit/application/doc_spec.rb +55 -32
  327. data/spec/unit/application/kick_spec.rb +8 -6
  328. data/spec/unit/application/master_spec.rb +4 -4
  329. data/spec/unit/daemon_spec.rb +1 -1
  330. data/spec/unit/forge/errors_spec.rb +40 -0
  331. data/spec/unit/forge/repository_spec.rb +11 -1
  332. data/spec/unit/forge_spec.rb +13 -3
  333. data/spec/unit/hiera/backend/puppet_backend_spec.rb +1 -0
  334. data/spec/unit/hiera/scope_spec.rb +48 -25
  335. data/spec/unit/indirector/catalog/active_record_spec.rb +6 -3
  336. data/spec/unit/indirector/catalog/compiler_spec.rb +3 -28
  337. data/spec/unit/indirector/catalog/static_compiler_spec.rb +1 -1
  338. data/spec/unit/indirector/facts/inventory_active_record_spec.rb +154 -150
  339. data/spec/unit/indirector/indirection_spec.rb +5 -0
  340. data/spec/unit/indirector/resource/active_record_spec.rb +5 -22
  341. data/spec/unit/indirector_spec.rb +7 -1
  342. data/spec/unit/interface/action_builder_spec.rb +1 -1
  343. data/spec/unit/interface/action_manager_spec.rb +0 -2
  344. data/spec/unit/interface/action_spec.rb +1 -1
  345. data/spec/unit/interface/documentation_spec.rb +0 -2
  346. data/spec/unit/interface/face_collection_spec.rb +1 -1
  347. data/spec/unit/interface/option_builder_spec.rb +1 -1
  348. data/spec/unit/interface/option_spec.rb +0 -1
  349. data/spec/unit/module_spec.rb +17 -19
  350. data/spec/unit/module_tool/application_spec.rb +1 -3
  351. data/spec/unit/module_tool/applications/builder_spec.rb +38 -0
  352. data/spec/unit/module_tool/applications/checksummer_spec.rb +134 -0
  353. data/spec/unit/module_tool/applications/installer_spec.rb +71 -91
  354. data/spec/unit/module_tool/applications/searcher_spec.rb +1 -3
  355. data/spec/unit/module_tool/applications/uninstaller_spec.rb +18 -26
  356. data/spec/unit/module_tool/applications/unpacker_spec.rb +19 -52
  357. data/spec/unit/module_tool/tar/gnu_spec.rb +19 -0
  358. data/spec/unit/module_tool/tar/mini_spec.rb +59 -0
  359. data/spec/unit/module_tool/tar/solaris_spec.rb +19 -0
  360. data/spec/unit/network/http/connection_spec.rb +17 -2
  361. data/spec/unit/network/http/handler_spec.rb +195 -167
  362. data/spec/unit/network/http/rack/rest_spec.rb +26 -4
  363. data/spec/unit/network/http/webrick/rest_spec.rb +28 -1
  364. data/spec/unit/network/http/webrick_spec.rb +12 -3
  365. data/spec/unit/node/environment_spec.rb +421 -404
  366. data/spec/unit/parser/ast/arithmetic_operator_spec.rb +98 -2
  367. data/spec/unit/parser/collector_spec.rb +4 -4
  368. data/spec/unit/parser/compiler_spec.rb +13 -13
  369. data/spec/unit/parser/eparser_adapter_spec.rb +407 -0
  370. data/spec/unit/parser/functions/extlookup_spec.rb +20 -17
  371. data/spec/unit/parser/functions/fqdn_rand_spec.rb +5 -0
  372. data/spec/unit/parser/functions/hiera_include_spec.rb +0 -2
  373. data/spec/unit/parser/functions/hiera_spec.rb +0 -2
  374. data/spec/unit/parser/functions_spec.rb +27 -15
  375. data/spec/unit/parser/methods/collect_spec.rb +110 -0
  376. data/spec/unit/parser/methods/each_spec.rb +91 -0
  377. data/spec/unit/parser/methods/foreach_spec.rb +91 -0
  378. data/spec/unit/parser/methods/reduce_spec.rb +67 -0
  379. data/spec/unit/parser/methods/reject_spec.rb +73 -0
  380. data/spec/unit/parser/methods/select_spec.rb +79 -0
  381. data/spec/unit/parser/methods/shared.rb +61 -0
  382. data/spec/unit/parser/methods/slice_spec.rb +97 -0
  383. data/spec/unit/parser/parser_spec.rb +2 -2
  384. data/spec/unit/parser/scope_spec.rb +39 -16
  385. data/spec/unit/parser/templatewrapper_spec.rb +6 -5
  386. data/spec/unit/parser/type_loader_spec.rb +191 -165
  387. data/spec/unit/pops/adaptable_spec.rb +143 -0
  388. data/spec/unit/pops/containment_spec.rb +25 -0
  389. data/spec/unit/pops/factory_rspec_helper.rb +77 -0
  390. data/spec/unit/pops/factory_spec.rb +329 -0
  391. data/spec/unit/pops/issues_spec.rb +26 -0
  392. data/spec/unit/pops/label_provider_spec.rb +42 -0
  393. data/spec/unit/pops/model/ast_transformer_spec.rb +65 -0
  394. data/spec/unit/pops/model/model_spec.rb +37 -0
  395. data/spec/unit/pops/parser/lexer_spec.rb +884 -0
  396. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +248 -0
  397. data/spec/unit/pops/parser/parse_calls_spec.rb +93 -0
  398. data/spec/unit/pops/parser/parse_conditionals_spec.rb +159 -0
  399. data/spec/unit/pops/parser/parse_containers_spec.rb +175 -0
  400. data/spec/unit/pops/parser/parse_resource_spec.rb +228 -0
  401. data/spec/unit/pops/parser/parser_rspec_helper.rb +11 -0
  402. data/spec/unit/pops/parser/parser_spec.rb +15 -0
  403. data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +16 -0
  404. data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +243 -0
  405. data/spec/unit/pops/transformer/transform_calls_spec.rb +80 -0
  406. data/spec/unit/pops/transformer/transform_conditionals_spec.rb +132 -0
  407. data/spec/unit/pops/transformer/transform_containers_spec.rb +182 -0
  408. data/spec/unit/pops/transformer/transform_resource_spec.rb +185 -0
  409. data/spec/unit/pops/transformer/transformer_rspec_helper.rb +27 -0
  410. data/spec/unit/pops/visitor_spec.rb +94 -0
  411. data/spec/unit/property_spec.rb +11 -0
  412. data/spec/unit/provider/augeas/augeas_spec.rb +3 -0
  413. data/spec/unit/provider/cron/crontab_spec.rb +97 -7
  414. data/spec/unit/provider/cron/parsed_spec.rb +325 -0
  415. data/spec/unit/provider/exec/posix_spec.rb +1 -1
  416. data/spec/unit/provider/group/groupadd_spec.rb +33 -3
  417. data/spec/unit/provider/group/pw_spec.rb +5 -5
  418. data/spec/unit/provider/nameservice_spec.rb +304 -0
  419. data/spec/unit/provider/package/aix_spec.rb +53 -11
  420. data/spec/unit/provider/package/aptrpm_spec.rb +6 -0
  421. data/spec/unit/provider/package/gem_spec.rb +6 -11
  422. data/spec/unit/provider/package/nim_spec.rb +216 -7
  423. data/spec/unit/provider/package/opkg_spec.rb +180 -0
  424. data/spec/unit/provider/package/rpm_spec.rb +149 -3
  425. data/spec/unit/provider/package/yum_spec.rb +6 -5
  426. data/spec/unit/provider/parsedfile_spec.rb +122 -28
  427. data/spec/unit/provider/service/freebsd_spec.rb +18 -0
  428. data/spec/unit/provider/service/init_spec.rb +108 -87
  429. data/spec/unit/provider/service/launchd_spec.rb +2 -2
  430. data/spec/unit/provider/service/openwrt_spec.rb +109 -0
  431. data/spec/unit/provider/service/src_spec.rb +117 -41
  432. data/spec/unit/provider/service/systemd_spec.rb +125 -17
  433. data/spec/unit/provider/service/upstart_spec.rb +1 -1
  434. data/spec/unit/provider/user/aix_spec.rb +42 -0
  435. data/spec/unit/provider/user/directoryservice_spec.rb +1 -0
  436. data/spec/unit/provider/user/pw_spec.rb +24 -12
  437. data/spec/unit/provider/user/user_role_add_spec.rb +1 -1
  438. data/spec/unit/provider/user/useradd_spec.rb +179 -15
  439. data/spec/unit/resource/type_spec.rb +3 -3
  440. data/spec/unit/scheduler/job_spec.rb +79 -0
  441. data/spec/unit/scheduler/scheduler_spec.rb +129 -0
  442. data/spec/unit/scheduler/splay_job_spec.rb +35 -0
  443. data/spec/unit/ssl/base_spec.rb +3 -9
  444. data/spec/unit/ssl/certificate_authority_spec.rb +1 -0
  445. data/spec/unit/ssl/certificate_request_spec.rb +3 -1
  446. data/spec/unit/ssl/certificate_spec.rb +3 -1
  447. data/spec/unit/ssl/configuration_spec.rb +74 -0
  448. data/spec/unit/ssl/host_spec.rb +28 -7
  449. data/spec/unit/ssl/validator_spec.rb +311 -0
  450. data/spec/unit/transaction/event_manager_spec.rb +49 -0
  451. data/spec/unit/transaction/event_spec.rb +20 -5
  452. data/spec/unit/transaction/report_spec.rb +8 -0
  453. data/spec/unit/type/cron_spec.rb +9 -0
  454. data/spec/unit/type/exec_spec.rb +11 -0
  455. data/spec/unit/type/file/content_spec.rb +20 -20
  456. data/spec/unit/type/file/mode_spec.rb +6 -0
  457. data/spec/unit/type/file/source_spec.rb +9 -7
  458. data/spec/unit/type/file_spec.rb +22 -3
  459. data/spec/unit/type/service_spec.rb +34 -21
  460. data/spec/unit/type_spec.rb +46 -1
  461. data/spec/unit/util/backups_spec.rb +2 -2
  462. data/spec/unit/util/execution_spec.rb +4 -1
  463. data/spec/unit/util/filetype_spec.rb +6 -0
  464. data/spec/unit/util/monkey_patches_spec.rb +18 -0
  465. data/spec/unit/util/network_device/cisco/device_spec.rb +37 -0
  466. data/spec/unit/util/network_device/config_spec.rb +14 -0
  467. data/spec/unit/util/network_device_spec.rb +3 -3
  468. data/spec/unit/util/profiler/logging_spec.rb +81 -0
  469. data/spec/unit/util/profiler/none_spec.rb +12 -0
  470. data/spec/unit/util/profiler/object_counts_spec.rb +14 -0
  471. data/spec/unit/util/profiler/wall_clock_spec.rb +13 -0
  472. data/spec/unit/util/pson_spec.rb +5 -0
  473. data/spec/unit/util/ssl_spec.rb +51 -0
  474. data/spec/unit/util/windows/root_certs_spec.rb +15 -0
  475. data/spec/unit/util_spec.rb +28 -0
  476. metadata +2593 -2307
  477. data/spec/unit/module_tool/applications/application_spec.rb +0 -19
@@ -1,4 +1,5 @@
1
1
  require 'puppet/util/docs'
2
+ require 'puppet/util/profiler'
2
3
  require 'puppet/util/methodhelper'
3
4
  require 'puppet/indirector/envelope'
4
5
  require 'puppet/indirector/request'
@@ -86,8 +87,9 @@ class Puppet::Indirector::Indirection
86
87
 
87
88
  text += scrub(@doc) + "\n\n" if @doc
88
89
 
90
+ text << "* **Indirected Class**: `#{@indirected_class}`\n";
89
91
  if s = terminus_setting
90
- text += "* **Terminus Setting**: #{terminus_setting}"
92
+ text << "* **Terminus Setting**: #{terminus_setting}\n"
91
93
  end
92
94
 
93
95
  text
@@ -104,6 +106,7 @@ class Puppet::Indirector::Indirection
104
106
  raise(ArgumentError, "Indirection #{@name} is already defined") if @@indirections.find { |i| i.name == @name }
105
107
  @@indirections << self
106
108
 
109
+ @indirected_class = options.delete(:indirected_class)
107
110
  if mod = options[:extend]
108
111
  extend(mod)
109
112
  options.delete(:extend)
@@ -183,22 +186,32 @@ class Puppet::Indirector::Indirection
183
186
  request = request(:find, key, nil, options)
184
187
  terminus = prepare(request)
185
188
 
186
- if result = find_in_cache(request)
187
- return result
188
- end
189
-
190
- # Otherwise, return the result from the terminus, caching if appropriate.
191
- if ! request.ignore_terminus? and result = terminus.find(request)
192
- result.expiration ||= self.expiration if result.respond_to?(:expiration)
193
- if cache? and request.use_cache?
194
- Puppet.info "Caching #{self.name} for #{request.key}"
195
- cache.save request(:save, key, result, options)
189
+ result = find_in_cache(request)
190
+ if not result.nil?
191
+ result
192
+ elsif request.ignore_terminus?
193
+ nil
194
+ else
195
+ # Otherwise, return the result from the terminus, caching if
196
+ # appropriate.
197
+ result = terminus.find(request)
198
+ if not result.nil?
199
+ result.expiration ||= self.expiration if result.respond_to?(:expiration)
200
+ if cache? and request.use_cache?
201
+ Puppet.info "Caching #{self.name} for #{request.key}"
202
+ cache.save request(:save, key, result, options)
203
+ end
204
+
205
+ filtered = result
206
+ if terminus.respond_to?(:filter)
207
+ Puppet::Util::Profiler.profile("Filtered result for #{self.name} #{request.key}") do
208
+ filtered = terminus.filter(result)
209
+ end
210
+ end
211
+
212
+ filtered
196
213
  end
197
-
198
- return terminus.respond_to?(:filter) ? terminus.filter(result) : result
199
214
  end
200
-
201
- nil
202
215
  end
203
216
 
204
217
  # Search for an instance in the appropriate terminus, and return a
@@ -1,6 +1,7 @@
1
1
  require 'net/http'
2
2
  require 'uri'
3
3
 
4
+ require 'puppet/network/http'
4
5
  require 'puppet/network/http_pool'
5
6
  require 'puppet/network/http/api/v1'
6
7
  require 'puppet/network/http/compression'
@@ -76,28 +77,35 @@ class Puppet::Indirector::REST < Puppet::Indirector::Terminus
76
77
  add_accept_encoding({"Accept" => model.supported_formats.join(", ")})
77
78
  end
78
79
 
80
+ def add_profiling_header(headers)
81
+ if (Puppet[:profile])
82
+ headers[Puppet::Network::HTTP::HEADER_ENABLE_PROFILING] = "true"
83
+ end
84
+ headers
85
+ end
86
+
79
87
  def network(request)
80
88
  Puppet::Network::HTTP::Connection.new(request.server || self.class.server, request.port || self.class.port)
81
89
  end
82
90
 
83
- def http_get(request, *args)
84
- http_request(:get, request, *args)
91
+ def http_get(request, path, headers = nil, *args)
92
+ http_request(:get, request, path, add_profiling_header(headers), *args)
85
93
  end
86
94
 
87
- def http_post(request, *args)
88
- http_request(:post, request, *args)
95
+ def http_post(request, path, data, headers = nil, *args)
96
+ http_request(:post, request, path, data, add_profiling_header(headers), *args)
89
97
  end
90
98
 
91
- def http_head(request, *args)
92
- http_request(:head, request, *args)
99
+ def http_head(request, path, headers = nil, *args)
100
+ http_request(:head, request, path, add_profiling_header(headers), *args)
93
101
  end
94
102
 
95
- def http_delete(request, *args)
96
- http_request(:delete, request, *args)
103
+ def http_delete(request, path, headers = nil, *args)
104
+ http_request(:delete, request, path, add_profiling_header(headers), *args)
97
105
  end
98
106
 
99
- def http_put(request, *args)
100
- http_request(:put, request, *args)
107
+ def http_put(request, path, data, headers = nil, *args)
108
+ http_request(:put, request, path, data, add_profiling_header(headers), *args)
101
109
  end
102
110
 
103
111
  def http_request(method, request, *args)
@@ -1,20 +1,27 @@
1
1
  require 'puppet'
2
2
  require 'puppet/util/autoload'
3
- require 'puppet/interface/documentation'
4
3
  require 'prettyprint'
5
4
  require 'semver'
6
5
 
7
6
  # @api public
8
7
  class Puppet::Interface
9
- include FullDocs
10
-
8
+ require 'puppet/interface/documentation'
11
9
  require 'puppet/interface/face_collection'
12
10
 
11
+ require 'puppet/interface/action'
12
+ require 'puppet/interface/action_builder'
13
13
  require 'puppet/interface/action_manager'
14
+
15
+ require 'puppet/interface/option'
16
+ require 'puppet/interface/option_builder'
17
+ require 'puppet/interface/option_manager'
18
+
19
+
20
+ include FullDocs
21
+
14
22
  include Puppet::Interface::ActionManager
15
23
  extend Puppet::Interface::ActionManager
16
24
 
17
- require 'puppet/interface/option_manager'
18
25
  include Puppet::Interface::OptionManager
19
26
  extend Puppet::Interface::OptionManager
20
27
 
@@ -1,5 +1,3 @@
1
- require 'puppet/interface'
2
- require 'puppet/interface/documentation'
3
1
  require 'puppet/util/methodhelper'
4
2
  require 'prettyprint'
5
3
 
@@ -295,7 +293,7 @@ WRAPPER
295
293
  end
296
294
 
297
295
  def display_global_options(*args)
298
- args ? add_display_global_options(args) : @display_global_options + @face.display_global_options
296
+ args ? add_display_global_options(args) : @display_global_options + @face.display_global_options
299
297
  end
300
298
  alias :display_global_option :display_global_options
301
299
 
@@ -1,6 +1,3 @@
1
- require 'puppet/interface'
2
- require 'puppet/interface/action'
3
-
4
1
  # This class is used to build {Puppet::Interface::Action actions}.
5
2
  # When an action is defined with
6
3
  # {Puppet::Interface::ActionManager#action} the block is evaluated
@@ -1,6 +1,3 @@
1
- require 'puppet/interface/action'
2
- require 'puppet/interface/action_builder'
3
-
4
1
  # This class is not actually public API, but the method
5
2
  # {Puppet::Interface::ActionManager#action action} is public when used
6
3
  # as part of the Faces DSL (i.e. from within a
@@ -1,5 +1,3 @@
1
- require 'puppet/interface'
2
-
3
1
  module Puppet::Interface::FaceCollection
4
2
  @faces = Hash.new { |hash, key| hash[key] = {} }
5
3
 
@@ -1,5 +1,3 @@
1
- require 'puppet/interface'
2
-
3
1
  # This represents an option on an action or face (to be globally applied
4
2
  # to its actions). Options should be constructed by calling
5
3
  # {Puppet::Interface::OptionManager#option}, which is available on
@@ -1,5 +1,3 @@
1
- require 'puppet/interface/option'
2
-
3
1
  # @api public
4
2
  class Puppet::Interface::OptionBuilder
5
3
  # The option under construction
@@ -1,5 +1,3 @@
1
- require 'puppet/interface/option_builder'
2
-
3
1
  # This class is not actually public API, but the method
4
2
  # {Puppet::Interface::OptionManager#option option} is public when used
5
3
  # as part of the Faces DSL (i.e. from within a
@@ -34,7 +34,7 @@ module Manager
34
34
  end
35
35
  end
36
36
 
37
- # Loads all types.
37
+ # Loads all types.
38
38
  # @note Should only be used for purposes such as generating documentation as this is potentially a very
39
39
  # expensive operation.
40
40
  # @return [void]
@@ -6,6 +6,7 @@ require 'puppet/util/colors'
6
6
 
7
7
  module Puppet
8
8
  module ModuleTool
9
+ require 'puppet/module_tool/tar'
9
10
  extend Puppet::Util::Colors
10
11
 
11
12
  # Directory and names that should not be checksummed.
@@ -14,9 +14,6 @@ module Puppet::ModuleTool
14
14
  attr_accessor :options
15
15
 
16
16
  def initialize(options = {})
17
- if Puppet.features.microsoft_windows?
18
- raise Puppet::Error, "`puppet module` actions are currently not supported on Microsoft Windows"
19
- end
20
17
  @options = options
21
18
  end
22
19
 
@@ -16,9 +16,8 @@ module Puppet::ModuleTool
16
16
  copy_contents
17
17
  add_metadata
18
18
  Puppet.notice "Building #{@path} for release"
19
- tar
20
- gzip
21
- relative = Pathname.new(File.join(@pkg_path, filename('tar.gz'))).relative_path_from(Pathname.new(Dir.pwd))
19
+ pack
20
+ relative = Pathname.new(archive_file).relative_path_from(Pathname.new(File.expand_path(Dir.pwd)))
22
21
 
23
22
  # Return the Pathname object representing the path to the release
24
23
  # archive just created. This return value is used by the module_tool
@@ -34,27 +33,16 @@ module Puppet::ModuleTool
34
33
 
35
34
  private
36
35
 
37
- def filename(ext)
38
- ext.sub!(/^\./, '')
39
- "#{metadata.release_name}.#{ext}"
36
+ def archive_file
37
+ File.join(@pkg_path, "#{metadata.release_name}.tar.gz")
40
38
  end
41
39
 
42
- def tar
43
- tar_name = filename('tar')
44
- Dir.chdir(@pkg_path) do
45
- FileUtils.rm tar_name rescue nil
46
- unless system "tar -cf #{tar_name} #{metadata.release_name}"
47
- raise RuntimeError, "Could not create #{tar_name}"
48
- end
49
- end
50
- end
40
+ def pack
41
+ FileUtils.rm archive_file rescue nil
51
42
 
52
- def gzip
43
+ tar = Puppet::ModuleTool::Tar.instance(metadata.full_module_name)
53
44
  Dir.chdir(@pkg_path) do
54
- FileUtils.rm filename('tar.gz') rescue nil
55
- unless system "gzip #{filename('tar')}"
56
- raise RuntimeError, "Could not compress #{filename('tar')}"
57
- end
45
+ tar.pack(metadata.release_name, archive_file)
58
46
  end
59
47
  end
60
48
 
@@ -22,7 +22,7 @@ module Puppet::ModuleTool
22
22
  next if File.basename(child_path) == "metadata.json"
23
23
 
24
24
  path = @path + child_path
25
- if canonical_checksum != sums.checksum(path)
25
+ unless path.exist? && canonical_checksum == sums.checksum(path)
26
26
  changes << child_path
27
27
  end
28
28
  end
@@ -27,6 +27,7 @@ module Puppet::ModuleTool
27
27
  end
28
28
 
29
29
  def run
30
+ results = {}
30
31
  begin
31
32
  if is_module_package?(@name)
32
33
  @source = :filesystem
@@ -8,6 +8,7 @@ module Puppet::ModuleTool
8
8
  def initialize(filename, options = {})
9
9
  @filename = Pathname.new(filename)
10
10
  parsed = parse_filename(filename)
11
+ @module_name = parsed[:module_name]
11
12
  super(options)
12
13
  @module_dir = Pathname.new(options[:target_dir]) + parsed[:dir_name]
13
14
  end
@@ -29,23 +30,14 @@ module Puppet::ModuleTool
29
30
  end
30
31
 
31
32
  private
33
+
32
34
  def extract_module_to_install_dir
33
35
  delete_existing_installation_or_abort!
34
36
 
35
37
  build_dir.mkpath
36
38
  begin
37
39
  begin
38
- if Facter.value('osfamily') == "Solaris"
39
- # Solaris tar is not as safe and works differently, so we prefer
40
- # gnutar instead.
41
- if Puppet::Util.which('gtar')
42
- Puppet::Util::Execution.execute("gtar xzf #{@filename} -C #{build_dir}")
43
- else
44
- raise RuntimeError, "Cannot find the command 'gtar'. Make sure GNU tar is installed, and is in your PATH."
45
- end
46
- else
47
- Puppet::Util::Execution.execute("tar xzf #{@filename} -C #{build_dir}")
48
- end
40
+ Puppet::ModuleTool::Tar.instance(@module_name).unpack(@filename.to_s, build_dir.to_s)
49
41
  rescue Puppet::ExecutionFailure => e
50
42
  raise RuntimeError, "Could not extract contents of module archive: #{e.message}"
51
43
  end
@@ -16,7 +16,7 @@ module Puppet::ModuleTool
16
16
 
17
17
  # Return checksum for the +Pathname+.
18
18
  def checksum(pathname)
19
- return Digest::MD5.hexdigest(pathname.read)
19
+ return Digest::MD5.hexdigest(IO.binread(pathname))
20
20
  end
21
21
 
22
22
  # Return checksums for object's +Pathname+, generate if it's needed.
@@ -46,7 +46,7 @@ module Puppet::ModuleTool::Errors
46
46
  message << " Currently, '#{@metadata[:name]}' (#{v(@metadata[:version])}) is installed to that directory"
47
47
  end
48
48
 
49
- message << " Use `puppet module install --dir <DIR>` to install modules elsewhere"
49
+ message << " Use `puppet module install --target-dir <DIR>` to install modules elsewhere"
50
50
 
51
51
  if @dependency
52
52
  message << " Use `puppet module install --ignore-dependencies` to install only this module"
@@ -107,4 +107,21 @@ Could not install module '#{@requested_module}' (#{@requested_version})
107
107
  MSG
108
108
  end
109
109
  end
110
+
111
+ class InvalidPathInPackageError < InstallError
112
+ def initialize(options)
113
+ @requested_package = options[:requested_package]
114
+ @entry_path = options[:entry_path]
115
+ @directory = options[:directory]
116
+ super "Attempt to install file into #{@entry_path.inspect} under #{@directory.inspect}"
117
+ end
118
+
119
+ def multiline
120
+ <<-MSG.strip
121
+ Could not install package #{@requested_package}
122
+ Package #{@requested_package} attempted to install file into
123
+ #{@entry_path.inspect} under #{@directory.inspect}.
124
+ MSG
125
+ end
126
+ end
110
127
  end
@@ -30,13 +30,13 @@ module Puppet::ModuleTool
30
30
  @metadata.full_module_name = name
31
31
  end
32
32
 
33
- # Set the module +version+ (e.g., "0.0.1"). Required.
33
+ # Set the module +version+ (e.g., "0.1.0"). Required.
34
34
  def version(version)
35
35
  @metadata.version = version
36
36
  end
37
37
 
38
38
  # Add a dependency with the full_module_name +name+ (e.g. "myuser-mymodule"), an
39
- # optional +version_requirement+ (e.g. "0.0.1") and +repository+ (a URL
39
+ # optional +version_requirement+ (e.g. "0.1.0") and +repository+ (a URL
40
40
  # string). Optional. Can be called multiple times to add many dependencies.
41
41
  def dependency(name, version_requirement = nil, repository = nil)
42
42
  @metadata.dependencies << Dependency.new(name, version_requirement, repository)
@@ -1,5 +1,5 @@
1
1
  name '<%= metadata.full_module_name %>'
2
- version '0.0.1'
2
+ version '0.1.0'
3
3
  source '<%= metadata.source %>'
4
4
  author '<%= metadata.author %>'
5
5
  license '<%= metadata.license %>'
@@ -0,0 +1,17 @@
1
+ module Puppet::ModuleTool::Tar
2
+ require 'puppet/module_tool/tar/gnu'
3
+ require 'puppet/module_tool/tar/solaris'
4
+ require 'puppet/module_tool/tar/mini'
5
+
6
+ def self.instance(module_name)
7
+ if Facter.value('osfamily') == 'Solaris' && Puppet::Util.which('gtar') && ! Puppet::Util::Platform.windows?
8
+ Solaris.new
9
+ elsif Puppet::Util.which('tar') && ! Puppet::Util::Platform.windows?
10
+ Gnu.new
11
+ elsif Puppet.features.minitar? && Puppet.features.zlib?
12
+ Mini.new(module_name)
13
+ else
14
+ raise RuntimeError, 'No suitable tar implementation found'
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,9 @@
1
+ class Puppet::ModuleTool::Tar::Gnu
2
+ def unpack(sourcefile, destdir)
3
+ Puppet::Util::Execution.execute("tar xzf #{sourcefile} -C #{destdir}")
4
+ end
5
+
6
+ def pack(sourcedir, destfile)
7
+ Puppet::Util::Execution.execute("tar cf - #{sourcedir} | gzip -c > #{destfile}")
8
+ end
9
+ end