puppet 3.0.2 → 3.1.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 (320) hide show
  1. data/Gemfile +13 -11
  2. data/README.md +9 -7
  3. data/README_DEVELOPER.md +21 -30
  4. data/bin/extlookup2hiera +0 -0
  5. data/conf/auth.conf +42 -26
  6. data/conf/fileserver.conf +41 -0
  7. data/conf/tagmail.conf +16 -0
  8. data/examples/hiera/modules/data/manifests/common.pp +2 -1
  9. data/examples/hiera/modules/ntp/manifests/config.pp +4 -3
  10. data/examples/hiera/modules/ntp/manifests/data.pp +2 -1
  11. data/examples/hiera/modules/users/manifests/common.pp +2 -1
  12. data/examples/hiera/modules/users/manifests/dc1.pp +2 -1
  13. data/examples/hiera/modules/users/manifests/development.pp +2 -1
  14. data/examples/hiera/site.pp +1 -1
  15. data/ext/debian/fileserver.conf +39 -15
  16. data/ext/envpuppet +2 -0
  17. data/ext/gentoo/puppet/fileserver.conf +41 -12
  18. data/ext/ips/puppet-agent +1 -6
  19. data/ext/ips/puppetagent.xml +0 -4
  20. data/ext/osx/postflight.erb +109 -0
  21. data/ext/project_data.yaml +2 -2
  22. data/ext/redhat/fileserver.conf +41 -12
  23. data/ext/redhat/puppet.spec.erb +8 -13
  24. data/install.rb +2 -5
  25. data/lib/puppet.rb +30 -13
  26. data/lib/puppet/application.rb +34 -16
  27. data/lib/puppet/application/agent.rb +4 -4
  28. data/lib/puppet/application/master.rb +25 -5
  29. data/lib/puppet/defaults.rb +11 -7
  30. data/lib/puppet/dsl.rb +7 -3
  31. data/lib/puppet/dsl/actions.rb +283 -0
  32. data/lib/puppet/dsl/blank_slate.rb +55 -0
  33. data/lib/puppet/dsl/context.rb +393 -0
  34. data/lib/puppet/dsl/parser.rb +57 -0
  35. data/lib/puppet/dsl/resource_decorator.rb +56 -0
  36. data/lib/puppet/dsl/resource_reference.rb +95 -0
  37. data/lib/puppet/dsl/type_reference.rb +102 -0
  38. data/lib/puppet/error.rb +1 -1
  39. data/lib/puppet/face/help.rb +2 -4
  40. data/lib/puppet/face/man.rb +8 -2
  41. data/lib/puppet/feature/pson.rb +1 -3
  42. data/lib/puppet/indirector/catalog/active_record.rb +3 -0
  43. data/lib/puppet/indirector/catalog/compiler.rb +1 -2
  44. data/lib/puppet/indirector/catalog/queue.rb +4 -0
  45. data/lib/puppet/indirector/catalog/static_compiler.rb +30 -0
  46. data/lib/puppet/indirector/catalog/store_configs.rb +3 -0
  47. data/lib/puppet/indirector/certificate_request/rest.rb +1 -0
  48. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +1 -0
  49. data/lib/puppet/indirector/certificate_status/file.rb +4 -0
  50. data/lib/puppet/indirector/certificate_status/rest.rb +1 -0
  51. data/lib/puppet/indirector/facts/active_record.rb +3 -0
  52. data/lib/puppet/indirector/facts/couch.rb +3 -0
  53. data/lib/puppet/indirector/facts/inventory_active_record.rb +4 -0
  54. data/lib/puppet/indirector/facts/store_configs.rb +3 -0
  55. data/lib/puppet/indirector/file_metadata/rest.rb +2 -0
  56. data/lib/puppet/indirector/instrumentation_data/local.rb +3 -0
  57. data/lib/puppet/indirector/instrumentation_data/rest.rb +3 -0
  58. data/lib/puppet/indirector/instrumentation_listener/local.rb +3 -0
  59. data/lib/puppet/indirector/instrumentation_listener/rest.rb +3 -0
  60. data/lib/puppet/indirector/instrumentation_probe/local.rb +3 -0
  61. data/lib/puppet/indirector/instrumentation_probe/rest.rb +3 -0
  62. data/lib/puppet/indirector/node/active_record.rb +3 -0
  63. data/lib/puppet/indirector/node/rest.rb +2 -2
  64. data/lib/puppet/indirector/node/store_configs.rb +3 -0
  65. data/lib/puppet/indirector/node/write_only_yaml.rb +32 -0
  66. data/lib/puppet/indirector/queue.rb +0 -1
  67. data/lib/puppet/indirector/request.rb +1 -2
  68. data/lib/puppet/indirector/resource/active_record.rb +4 -0
  69. data/lib/puppet/indirector/resource/ral.rb +3 -0
  70. data/lib/puppet/indirector/resource/rest.rb +3 -0
  71. data/lib/puppet/indirector/resource/store_configs.rb +3 -0
  72. data/lib/puppet/indirector/run/local.rb +3 -0
  73. data/lib/puppet/indirector/ssl_file.rb +16 -14
  74. data/lib/puppet/indirector/status/local.rb +3 -0
  75. data/lib/puppet/indirector/status/rest.rb +4 -0
  76. data/lib/puppet/interface.rb +78 -3
  77. data/lib/puppet/interface/action.rb +39 -3
  78. data/lib/puppet/interface/action_builder.rb +74 -1
  79. data/lib/puppet/interface/action_manager.rb +33 -3
  80. data/lib/puppet/interface/documentation.rb +116 -5
  81. data/lib/puppet/interface/face_collection.rb +6 -7
  82. data/lib/puppet/interface/option.rb +10 -1
  83. data/lib/puppet/interface/option_builder.rb +29 -1
  84. data/lib/puppet/interface/option_manager.rb +21 -6
  85. data/lib/puppet/metatype/manager.rb +47 -9
  86. data/lib/puppet/module_tool.rb +0 -1
  87. data/lib/puppet/network/formats.rb +0 -2
  88. data/lib/puppet/node.rb +2 -3
  89. data/lib/puppet/node/environment.rb +14 -1
  90. data/lib/puppet/parameter.rb +309 -44
  91. data/lib/puppet/parameter/package_options.rb +5 -0
  92. data/lib/puppet/parameter/path.rb +26 -3
  93. data/lib/puppet/parameter/value.rb +30 -6
  94. data/lib/puppet/parameter/value_collection.rb +82 -20
  95. data/lib/puppet/parser.rb +3 -0
  96. data/lib/puppet/parser/ast/definition.rb +2 -5
  97. data/lib/puppet/parser/ast/hostclass.rb +2 -3
  98. data/lib/puppet/parser/ast/node.rb +2 -5
  99. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  100. data/lib/puppet/parser/compiler.rb +10 -0
  101. data/lib/puppet/parser/functions.rb +111 -7
  102. data/lib/puppet/parser/functions/create_resources.rb +23 -2
  103. data/lib/puppet/parser/functions/defined.rb +1 -1
  104. data/lib/puppet/parser/functions/extlookup.rb +2 -1
  105. data/lib/puppet/parser/functions/fail.rb +1 -1
  106. data/lib/puppet/parser/functions/file.rb +1 -1
  107. data/lib/puppet/parser/functions/fqdn_rand.rb +1 -1
  108. data/lib/puppet/parser/functions/generate.rb +1 -1
  109. data/lib/puppet/parser/functions/hiera.rb +1 -1
  110. data/lib/puppet/parser/functions/hiera_array.rb +1 -1
  111. data/lib/puppet/parser/functions/hiera_hash.rb +1 -1
  112. data/lib/puppet/parser/functions/hiera_include.rb +1 -1
  113. data/lib/puppet/parser/functions/include.rb +1 -1
  114. data/lib/puppet/parser/functions/inline_template.rb +1 -1
  115. data/lib/puppet/parser/functions/md5.rb +1 -1
  116. data/lib/puppet/parser/functions/realize.rb +1 -1
  117. data/lib/puppet/parser/functions/regsubst.rb +54 -57
  118. data/lib/puppet/parser/functions/require.rb +1 -0
  119. data/lib/puppet/parser/functions/search.rb +1 -1
  120. data/lib/puppet/parser/functions/sha1.rb +1 -1
  121. data/lib/puppet/parser/functions/shellquote.rb +1 -1
  122. data/lib/puppet/parser/functions/split.rb +1 -2
  123. data/lib/puppet/parser/functions/sprintf.rb +7 -10
  124. data/lib/puppet/parser/functions/tag.rb +1 -1
  125. data/lib/puppet/parser/functions/tagged.rb +1 -1
  126. data/lib/puppet/parser/functions/template.rb +1 -1
  127. data/lib/puppet/parser/functions/versioncmp.rb +1 -5
  128. data/lib/puppet/parser/parser_support.rb +11 -27
  129. data/lib/puppet/parser/scope.rb +48 -4
  130. data/lib/puppet/parser/type_loader.rb +31 -7
  131. data/lib/puppet/property.rb +304 -70
  132. data/lib/puppet/property/ensure.rb +14 -1
  133. data/lib/puppet/property/keyvalue.rb +17 -8
  134. data/lib/puppet/property/list.rb +3 -0
  135. data/lib/puppet/property/ordered_list.rb +7 -0
  136. data/lib/puppet/provider.rb +275 -53
  137. data/lib/puppet/provider/augeas/augeas.rb +17 -3
  138. data/lib/puppet/provider/confiner.rb +30 -1
  139. data/lib/puppet/provider/group/pw.rb +2 -2
  140. data/lib/puppet/provider/package/pip.rb +0 -1
  141. data/lib/puppet/provider/package/pkgin.rb +2 -0
  142. data/lib/puppet/provider/service/bsd.rb +1 -1
  143. data/lib/puppet/provider/service/freebsd.rb +10 -6
  144. data/lib/puppet/provider/service/init.rb +1 -1
  145. data/lib/puppet/provider/service/service.rb +1 -1
  146. data/lib/puppet/provider/user/pw.rb +2 -2
  147. data/lib/puppet/provider/user/useradd.rb +2 -3
  148. data/lib/puppet/reference/configuration.rb +6 -0
  149. data/lib/puppet/reports.rb +44 -4
  150. data/lib/puppet/reports/tagmail.rb +1 -1
  151. data/lib/puppet/resource.rb +38 -25
  152. data/lib/puppet/resource/type.rb +14 -6
  153. data/lib/puppet/settings.rb +66 -142
  154. data/lib/puppet/settings/config_file.rb +99 -0
  155. data/lib/puppet/settings/file_setting.rb +92 -24
  156. data/lib/puppet/settings/value_translator.rb +15 -0
  157. data/lib/puppet/ssl/certificate_authority/interface.rb +2 -2
  158. data/lib/puppet/test/test_helper.rb +8 -3
  159. data/lib/puppet/transaction.rb +1 -2
  160. data/lib/puppet/transaction/report.rb +122 -13
  161. data/lib/puppet/type.rb +763 -150
  162. data/lib/puppet/type/augeas.rb +4 -0
  163. data/lib/puppet/type/file/ensure.rb +1 -1
  164. data/lib/puppet/type/file/group.rb +1 -1
  165. data/lib/puppet/type/file/mode.rb +2 -0
  166. data/lib/puppet/type/file/selcontext.rb +1 -0
  167. data/lib/puppet/type/group.rb +12 -0
  168. data/lib/puppet/type/mount.rb +2 -2
  169. data/lib/puppet/type/notify.rb +1 -1
  170. data/lib/puppet/type/router.rb +1 -1
  171. data/lib/puppet/type/service.rb +1 -0
  172. data/lib/puppet/type/ssh_authorized_key.rb +3 -1
  173. data/lib/puppet/type/user.rb +8 -1
  174. data/lib/puppet/util.rb +8 -0
  175. data/lib/puppet/util/autoload.rb +7 -10
  176. data/lib/puppet/util/classgen.rb +58 -33
  177. data/lib/puppet/util/command_line.rb +120 -77
  178. data/lib/puppet/util/constant_inflector.rb +2 -0
  179. data/lib/puppet/util/execution.rb +63 -33
  180. data/lib/puppet/util/filetype.rb +1 -1
  181. data/lib/puppet/util/manifest_filetype_helper.rb +22 -0
  182. data/lib/puppet/util/methodhelper.rb +19 -0
  183. data/lib/puppet/util/monkey_patches.rb +46 -0
  184. data/lib/puppet/util/plugins.rb +2 -2
  185. data/lib/puppet/util/provider_features.rb +24 -8
  186. data/lib/puppet/util/rubygems.rb +8 -1
  187. data/lib/puppet/util/zaml.rb +1 -1
  188. data/lib/puppet/version.rb +74 -3
  189. data/spec/integration/application/apply_spec.rb +1 -1
  190. data/spec/integration/defaults_spec.rb +1 -0
  191. data/spec/integration/dsl/classes_spec.rb +191 -0
  192. data/spec/integration/dsl/defaults_spec.rb +38 -0
  193. data/spec/integration/dsl/definitions_spec.rb +73 -0
  194. data/spec/integration/dsl/functions_spec.rb +95 -0
  195. data/spec/integration/dsl/nodes_spec.rb +96 -0
  196. data/spec/integration/dsl/params_spec.rb +146 -0
  197. data/spec/integration/dsl/relationships_spec.rb +46 -0
  198. data/spec/integration/dsl/resources_spec.rb +202 -0
  199. data/spec/integration/dsl/type_loading_spec.rb +64 -0
  200. data/spec/integration/indirector/catalog/queue_spec.rb +1 -1
  201. data/spec/integration/network/formats_spec.rb +32 -45
  202. data/spec/integration/parser/collector_spec.rb +105 -25
  203. data/spec/integration/parser/scope_spec.rb +64 -1
  204. data/spec/integration/resource/catalog_spec.rb +2 -4
  205. data/spec/integration/type/package_spec.rb +1 -1
  206. data/spec/lib/matchers/catalog.rb +50 -0
  207. data/spec/lib/puppet_spec/compiler.rb +11 -0
  208. data/spec/lib/puppet_spec/dsl.rb +29 -0
  209. data/spec/spec_helper.rb +17 -3
  210. data/spec/unit/application/agent_spec.rb +0 -1
  211. data/spec/unit/application/apply_spec.rb +1 -1
  212. data/spec/unit/application/face_base_spec.rb +11 -4
  213. data/spec/unit/application/indirection_base_spec.rb +4 -8
  214. data/spec/unit/application/kick_spec.rb +5 -2
  215. data/spec/unit/application/master_spec.rb +0 -6
  216. data/spec/unit/application_spec.rb +38 -14
  217. data/spec/unit/dsl/actions_spec.rb +402 -0
  218. data/spec/unit/dsl/blank_slate_spec.rb +27 -0
  219. data/spec/unit/dsl/context_spec.rb +678 -0
  220. data/spec/unit/dsl/parser_spec.rb +56 -0
  221. data/spec/unit/dsl/resource_decorator_spec.rb +94 -0
  222. data/spec/unit/dsl/resource_reference_spec.rb +150 -0
  223. data/spec/unit/dsl/type_reference_spec.rb +164 -0
  224. data/spec/unit/face/help_spec.rb +5 -7
  225. data/spec/unit/indirector/certificate_request/rest_spec.rb +4 -0
  226. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +4 -0
  227. data/spec/unit/indirector/certificate_status/rest_spec.rb +4 -0
  228. data/spec/unit/indirector/file_metadata/rest_spec.rb +5 -0
  229. data/spec/unit/indirector/hiera_spec.rb +3 -1
  230. data/spec/unit/indirector/queue_spec.rb +1 -7
  231. data/spec/unit/indirector/ssl_file_spec.rb +66 -39
  232. data/spec/unit/module_spec.rb +1 -1
  233. data/spec/unit/network/authstore_spec.rb +22 -1
  234. data/spec/unit/network/formats_spec.rb +1 -1
  235. data/spec/unit/node/environment_spec.rb +13 -0
  236. data/spec/unit/parser/collector_spec.rb +1 -1
  237. data/spec/unit/parser/compiler_spec.rb +26 -0
  238. data/spec/unit/parser/functions/create_resources_spec.rb +12 -1
  239. data/spec/unit/parser/functions/extlookup_spec.rb +4 -4
  240. data/spec/unit/parser/functions/hiera_array_spec.rb +1 -1
  241. data/spec/unit/parser/functions/hiera_hash_spec.rb +1 -1
  242. data/spec/unit/parser/functions/hiera_include_spec.rb +1 -1
  243. data/spec/unit/parser/functions/hiera_spec.rb +1 -1
  244. data/spec/unit/parser/functions/regsubst_spec.rb +4 -4
  245. data/spec/unit/parser/functions/split_spec.rb +4 -4
  246. data/spec/unit/parser/functions/sprintf_spec.rb +2 -2
  247. data/spec/unit/parser/functions/versioncmp_spec.rb +4 -4
  248. data/spec/unit/parser/functions_spec.rb +51 -1
  249. data/spec/unit/parser/parser_spec.rb +0 -14
  250. data/spec/unit/parser/type_loader_spec.rb +15 -1
  251. data/spec/unit/provider/augeas/augeas_spec.rb +31 -0
  252. data/spec/unit/provider/package/apt_spec.rb +0 -2
  253. data/spec/unit/provider/package/pip_spec.rb +12 -2
  254. data/spec/unit/provider/service/freebsd_spec.rb +8 -0
  255. data/spec/unit/provider/service/gentoo_spec.rb +20 -20
  256. data/spec/unit/provider/service/openrc_spec.rb +20 -20
  257. data/spec/unit/provider/service/src_spec.rb +4 -4
  258. data/spec/unit/provider/service/systemd_spec.rb +0 -8
  259. data/spec/unit/provider/service/windows_spec.rb +1 -1
  260. data/spec/unit/provider/user/useradd_spec.rb +2 -9
  261. data/spec/unit/relationship_spec.rb +2 -2
  262. data/spec/unit/resource/catalog_spec.rb +2 -2
  263. data/spec/unit/resource/type_spec.rb +49 -25
  264. data/spec/unit/resource_spec.rb +34 -2
  265. data/spec/unit/settings/config_file_spec.rb +100 -0
  266. data/spec/unit/settings/file_setting_spec.rb +87 -84
  267. data/spec/unit/settings/value_translator_spec.rb +77 -0
  268. data/spec/unit/settings_spec.rb +96 -29
  269. data/spec/unit/type/file/ensure_spec.rb +75 -36
  270. data/spec/unit/type/file_spec.rb +0 -68
  271. data/spec/unit/type/group_spec.rb +10 -0
  272. data/spec/unit/util/autoload_spec.rb +6 -0
  273. data/spec/unit/util/command_line_spec.rb +54 -62
  274. data/spec/unit/util/manifest_filetype_helper_spec.rb +29 -0
  275. data/spec/unit/util/metric_spec.rb +0 -9
  276. data/spec/unit/util/posix_spec.rb +0 -4
  277. data/spec/unit/util/rdoc_spec.rb +0 -12
  278. data/spec/unit/util/zaml_spec.rb +188 -130
  279. data/spec/unit/version_spec.rb +42 -0
  280. metadata +123 -90
  281. data/README_HIERA.md +0 -148
  282. data/conf/epm.list +0 -8
  283. data/conf/namespaceauth.conf +0 -20
  284. data/conf/puppet-queue.conf +0 -10
  285. data/examples/allatonce +0 -13
  286. data/examples/assignments +0 -11
  287. data/examples/components +0 -73
  288. data/examples/etc/init.d/sleeper +0 -70
  289. data/examples/etc/otherfile +0 -0
  290. data/examples/etc/puppet/fileserver.conf +0 -13
  291. data/examples/etc/puppet/namespaceauth.conf +0 -20
  292. data/examples/etc/puppet/puppet.conf +0 -10
  293. data/examples/etc/puppet/tagmail.conf +0 -1
  294. data/examples/execs +0 -16
  295. data/examples/file.bl +0 -11
  296. data/examples/filedefaults +0 -10
  297. data/examples/fileparsing +0 -116
  298. data/examples/filerecursion +0 -15
  299. data/examples/functions +0 -3
  300. data/examples/groups +0 -7
  301. data/examples/head +0 -30
  302. data/examples/importing +0 -8
  303. data/examples/mac_dscl.pp +0 -28
  304. data/examples/mac_dscl_revert.pp +0 -26
  305. data/examples/mac_pkgdmg.pp +0 -7
  306. data/examples/modules/sample_module.pp +0 -10
  307. data/examples/modules/sample_module/lib/puppet/parser/functions/hostname_to_dn.rb +0 -36
  308. data/examples/modules/sample_module/manifests/init.pp +0 -12
  309. data/examples/modules/sample_module/templates/sample.erb +0 -5
  310. data/examples/nodes +0 -20
  311. data/examples/one +0 -8
  312. data/examples/relationships +0 -34
  313. data/examples/selectors +0 -28
  314. data/examples/simpletests +0 -11
  315. data/examples/svncommit +0 -13
  316. data/lib/puppet/dsl/resource_api.rb +0 -120
  317. data/lib/puppet/dsl/resource_type_api.rb +0 -34
  318. data/spec/integration/parser/ruby_manifest_spec.rb +0 -127
  319. data/spec/unit/dsl/resource_api_spec.rb +0 -180
  320. data/spec/unit/dsl/resource_type_api_spec.rb +0 -53
@@ -0,0 +1,146 @@
1
+ require 'puppet'
2
+ require 'spec_helper'
3
+ require 'matchers/catalog'
4
+ require 'puppet_spec/compiler'
5
+
6
+ include PuppetSpec::Compiler
7
+
8
+ describe Puppet::DSL do
9
+ prepare_compiler
10
+
11
+ describe "params" do
12
+
13
+ it "should be able to set and read a variable" do
14
+ p = compile_to_catalog(<<-MANIFEST)
15
+ node default {
16
+ $asdf = "foo"
17
+
18
+ notify {"$asdf": }
19
+ }
20
+ MANIFEST
21
+
22
+ r = compile_ruby_to_catalog(<<-MANIFEST)
23
+ node "default" do
24
+ params[:asdf] = "foo"
25
+
26
+ notify params[:asdf]
27
+ end
28
+ MANIFEST
29
+ r.resources.map(&:name).should include "Notify/foo"
30
+
31
+ r.should be_equivalent_to_catalog p
32
+ end
33
+
34
+ it "should be able to read params for a resource" do
35
+ p = compile_to_catalog(<<-MANIFEST)
36
+ define foo($msg) {
37
+ notify {"$msg": }
38
+ }
39
+
40
+ foo {"foo": msg => "asdf"}
41
+ MANIFEST
42
+
43
+ r = compile_ruby_to_catalog(<<-MANIFEST)
44
+ define :foo, :arguments => {:msg => nil} do
45
+ notify params[:msg]
46
+ end
47
+
48
+ foo :foo, :msg => "asdf"
49
+ MANIFEST
50
+ r.resources.map(&:name).should include "Notify/asdf"
51
+
52
+ r.should be_equivalent_to_catalog p
53
+ end
54
+
55
+ context "defined in outer scope" do
56
+ it "should available in inner scope" do
57
+ p = compile_to_catalog(<<-MANIFEST)
58
+ $foobar = "baz"
59
+ define foo() {
60
+ notify {"$foobar": }
61
+ }
62
+
63
+ foo {"foo": }
64
+ MANIFEST
65
+
66
+ r = compile_ruby_to_catalog(<<-MANIFEST)
67
+ params[:foobar] = "baz"
68
+
69
+ define :foo do
70
+ notify params[:foobar]
71
+ end
72
+
73
+ foo :foo
74
+ MANIFEST
75
+ r.resources.map(&:name).should include "Notify/baz"
76
+
77
+ r.should be_equivalent_to_catalog p
78
+ end
79
+
80
+ it "should be overwritten in inner scope" do
81
+ p = compile_to_catalog(<<-MANIFEST)
82
+ $foobar = "baz"
83
+ define foo() {
84
+ $foobar = "asdf"
85
+ notify {"$foobar": }
86
+ }
87
+
88
+ foo {"foo": }
89
+ MANIFEST
90
+
91
+ r = compile_ruby_to_catalog(<<-MANIFEST)
92
+ params[:foobar] = "baz"
93
+
94
+ define :foo do
95
+ params[:foobar] = "asdf"
96
+ notify params[:foobar]
97
+ end
98
+
99
+ foo :foo
100
+ MANIFEST
101
+ r.resources.map(&:name).should include "Notify/asdf"
102
+
103
+ r.should be_equivalent_to_catalog p
104
+ end
105
+
106
+ it "should not be overwritten in outer scope" do
107
+ p = compile_to_catalog(<<-MANIFEST)
108
+ $foobar = "baz"
109
+ define foo() {
110
+ $foobar = "asdf"
111
+ notify {"$foobar": }
112
+ }
113
+
114
+ notify {"$foobar": }
115
+
116
+ foo {"foo": }
117
+ MANIFEST
118
+
119
+ r = compile_ruby_to_catalog(<<-MANIFEST)
120
+ params[:foobar] = "baz"
121
+
122
+ define :foo do
123
+ params[:foobar] = "asdf"
124
+ notify params[:foobar]
125
+ end
126
+
127
+ notify params[:foobar]
128
+
129
+ foo :foo
130
+ MANIFEST
131
+ r.resources.map(&:name).tap do |names|
132
+ %w[asdf baz].each do |name|
133
+ names.should include "Notify/#{name}"
134
+ end
135
+ end
136
+
137
+ r.should be_equivalent_to_catalog p
138
+
139
+
140
+ end
141
+
142
+ end
143
+
144
+ end
145
+ end
146
+
@@ -0,0 +1,46 @@
1
+ require 'puppet'
2
+ require 'spec_helper'
3
+ require 'matchers/catalog'
4
+ require 'puppet_spec/compiler'
5
+
6
+ include PuppetSpec::Compiler
7
+
8
+ describe Puppet::DSL do
9
+ prepare_compiler
10
+
11
+ describe "relationships" do
12
+ it "allows requiring resources" do
13
+ p = compile_to_catalog(<<-'END')
14
+ define foo() {
15
+ notify {"foo": message => "foo" }
16
+ }
17
+ define bar() {
18
+ notify {"bar": message => "bar" }
19
+ }
20
+
21
+ node "default" {
22
+ bar {"bar": }
23
+ foo {"foo": require => Bar["bar"] }
24
+ }
25
+ END
26
+
27
+ r = compile_ruby_to_catalog(<<-'END')
28
+ define :foo do
29
+ notify "foo", :message => "foo"
30
+ end
31
+
32
+ define :bar do
33
+ notify "bar", :message => "bar"
34
+ end
35
+
36
+ node "default" do
37
+ bar "bar"
38
+ foo "foo", :require => Bar["bar"]
39
+ end
40
+ END
41
+
42
+ r.should be_equivalent_to_catalog p
43
+ end
44
+ end
45
+ end
46
+
@@ -0,0 +1,202 @@
1
+ require 'spec_helper'
2
+ require 'matchers/catalog'
3
+ require 'puppet_spec/compiler'
4
+
5
+ include PuppetSpec::Compiler
6
+
7
+ describe Puppet::DSL do
8
+ prepare_compiler
9
+
10
+ describe "resources" do
11
+
12
+ it "should be able to define resource" do
13
+ p = compile_to_catalog(<<-MANIFEST)
14
+ define foo() {
15
+ notice("foo")
16
+ }
17
+ MANIFEST
18
+
19
+ r = compile_ruby_to_catalog(<<-MANIFEST)
20
+ define "foo" do
21
+ notice "foo"
22
+ end
23
+ MANIFEST
24
+
25
+ r.should be_equivalent_to_catalog p
26
+ end
27
+
28
+ it "should be able to define resource with parameters" do
29
+ p = compile_to_catalog(<<-MANIFEST)
30
+ define foo($msg) {
31
+ notice($msg)
32
+ }
33
+ MANIFEST
34
+
35
+ r = compile_ruby_to_catalog(<<-MANIFEST)
36
+ define :foo, :arguments => {:msg => nil} do
37
+ notice params[:msg]
38
+ end
39
+ MANIFEST
40
+
41
+ r.should be_equivalent_to_catalog p
42
+ end
43
+
44
+ it "should be able to use defined resource" do
45
+ p = compile_to_catalog(<<-MANIFEST)
46
+ define foo() {
47
+ notice("foo")
48
+ }
49
+
50
+ foo {"foo": }
51
+ MANIFEST
52
+
53
+ r = compile_ruby_to_catalog(<<-MANIFEST)
54
+ define :foo do
55
+ notice "foo"
56
+ end
57
+
58
+ foo "foo"
59
+ MANIFEST
60
+
61
+ r.should be_equivalent_to_catalog p
62
+ end
63
+
64
+ it "should be able to use defined resource in a node" do
65
+ p = compile_to_catalog(<<-MANIFEST)
66
+ define foo() {
67
+ notice("foo")
68
+ }
69
+
70
+ node default {
71
+ foo {"foo": }
72
+ }
73
+ MANIFEST
74
+
75
+ r = compile_ruby_to_catalog(<<-MANIFEST)
76
+ define :foo do
77
+ notice "foo"
78
+ end
79
+
80
+ node 'default' do
81
+ foo "foo"
82
+ end
83
+ MANIFEST
84
+
85
+ r.should be_equivalent_to_catalog p
86
+ end
87
+
88
+ it "should be able to use defined resource in a class" do
89
+ p = compile_to_catalog(<<-MANIFEST)
90
+ define foo() {
91
+ notice($name)
92
+ }
93
+
94
+ class bar {
95
+ foo {"foo": }
96
+ }
97
+ MANIFEST
98
+
99
+ r = compile_ruby_to_catalog(<<-MANIFEST)
100
+ define :foo do
101
+ notice params[:name]
102
+ end
103
+
104
+ hostclass :bar do
105
+ foo "foo"
106
+ end
107
+ MANIFEST
108
+
109
+ r.should be_equivalent_to_catalog p
110
+ end
111
+
112
+ it "should be able to export resources" do
113
+ p = compile_to_catalog(<<-MANIFEST)
114
+ define foo($msg = "bar") {
115
+ notify {$msg: message => $msg}
116
+ }
117
+
118
+ node default {
119
+ @@foo {"foobar":}
120
+
121
+ Foo <<| |>>
122
+ }
123
+ MANIFEST
124
+
125
+ r = compile_ruby_to_catalog(<<-MANIFEST)
126
+ define :foo, :arguments => {:msg => "bar"} do
127
+ notify params[:msg], :message => params[:msg]
128
+ end
129
+
130
+ node "default" do
131
+ export do
132
+ foo "foobar"
133
+ end
134
+
135
+ Foo.collect
136
+ end
137
+ MANIFEST
138
+
139
+ p.should be_equivalent_to_catalog r
140
+ end
141
+
142
+ it "should be able to virtualise resources" do
143
+ p = compile_to_catalog(<<-MANIFEST)
144
+ define foo($msg = "bar") {
145
+ notify {$msg: message => $msg}
146
+ }
147
+
148
+ node default {
149
+ @foo {"foobar":}
150
+
151
+ Foo <| |>
152
+ }
153
+ MANIFEST
154
+
155
+ r = compile_ruby_to_catalog(<<-MANIFEST)
156
+ define :foo, :arguments => {:msg => "bar"} do
157
+ notify params[:msg], :message => params[:msg]
158
+ end
159
+
160
+ node "default" do
161
+ virtual do
162
+ foo "foobar"
163
+ end
164
+
165
+ Foo.realise
166
+ end
167
+ MANIFEST
168
+
169
+ p.should be_equivalent_to_catalog r
170
+ end
171
+
172
+ context "references" do
173
+ before :each do
174
+ @catalog = compile_to_catalog(<<-MANIFEST)
175
+ file {"redis.conf": owner => root}
176
+
177
+ service {"redis": require => File['redis.conf']}
178
+ MANIFEST
179
+ end
180
+
181
+ it "should be able to reference other resources" do
182
+ compile_ruby_to_catalog(<<-MANIFEST).should be_equivalent_to_catalog @catalog
183
+ file "redis.conf", :owner => "root"
184
+
185
+ service "redis", :require => File["redis.conf"]
186
+ MANIFEST
187
+ end
188
+
189
+ it "should be able to reference other resources using a block" do
190
+ r = compile_ruby_to_catalog(<<-MANIFEST).should be_equivalent_to_catalog @catalog
191
+ file "redis.conf", :owner => "root"
192
+
193
+ service "redis" do |s|
194
+ s.require = File["redis.conf"]
195
+ end
196
+ MANIFEST
197
+ end
198
+ end
199
+
200
+ end
201
+ end
202
+
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+ require 'puppet_spec/compiler'
3
+ require 'puppet_spec/modules'
4
+ require 'puppet_spec/files'
5
+
6
+ include PuppetSpec::Compiler
7
+ include PuppetSpec::Modules
8
+ include PuppetSpec::Files
9
+
10
+ describe Puppet::DSL do
11
+ def mk_manifest(file, content)
12
+ name = self.module.name + "::" + file.gsub("/", "::").split(".")[0]
13
+ path = File.join(modulebase, self.module.name, "manifests", file)
14
+ FileUtils.mkdir_p(File.split(path)[0])
15
+
16
+ File.open(path, "w") { |f| f.print content }
17
+ end
18
+
19
+ prepare_compiler
20
+
21
+ let(:modulebase) do
22
+ base = File.join(tmpdir("base"), "modules")
23
+ FileUtils.mkdir_p(base)
24
+ Puppet[:modulepath] = base
25
+ base
26
+ end
27
+
28
+ let(:module) { PuppetSpec::Modules.create "module", modulebase }
29
+
30
+ describe "type loader" do
31
+
32
+ it "should load ruby code when referenced from puppet" do
33
+ mk_manifest("foo.rb", <<-MANIFEST)
34
+ hostclass :'module::foo' do; end
35
+ MANIFEST
36
+
37
+ compile_to_catalog(<<-MANIFEST)
38
+ include module::foo
39
+ MANIFEST
40
+ end
41
+
42
+ it "should load ruby code when referenced from ruby" do
43
+ mk_manifest("bar.rb", <<-MANIFEST)
44
+ hostclass :'module::bar' do; end
45
+ MANIFEST
46
+
47
+ compile_ruby_to_catalog(<<-MANIFEST)
48
+ use :'module::bar'
49
+ MANIFEST
50
+ end
51
+
52
+ it "should load puppet code when referenced from ruby" do
53
+ mk_manifest("baz.pp", <<-MANIFEST)
54
+ class module::baz {}
55
+ MANIFEST
56
+
57
+ compile_ruby_to_catalog(<<-MANIFEST)
58
+ use :'module::bar'
59
+ MANIFEST
60
+ end
61
+
62
+ end
63
+ end
64
+