puppet 4.10.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1031) hide show
  1. data/CONTRIBUTING.md +17 -0
  2. data/Gemfile +6 -10
  3. data/MAINTAINERS +0 -5
  4. data/Rakefile +2 -1
  5. data/conf/auth.conf +21 -0
  6. data/conf/fileserver.conf +7 -12
  7. data/conf/hiera.yaml +11 -0
  8. data/ext/debian/puppet-common.install +0 -1
  9. data/ext/debian/puppet-common.manpages +0 -2
  10. data/ext/hiera/hiera.yaml +15 -0
  11. data/ext/logcheck/puppet +1 -1
  12. data/ext/project_data.yaml +3 -6
  13. data/ext/puppet-test +0 -24
  14. data/ext/rack/config.ru +2 -2
  15. data/ext/redhat/puppet.spec.erb +0 -3
  16. data/ext/windows/service/daemon.rb +8 -14
  17. data/install.rb +1 -1
  18. data/lib/hiera/puppet_function.rb +1 -1
  19. data/lib/puppet/agent/disabler.rb +3 -3
  20. data/lib/puppet/agent/locker.rb +3 -3
  21. data/lib/puppet/agent.rb +27 -16
  22. data/lib/puppet/application/agent.rb +16 -9
  23. data/lib/puppet/application/apply.rb +19 -17
  24. data/lib/puppet/application/cert.rb +2 -2
  25. data/lib/puppet/application/describe.rb +2 -2
  26. data/lib/puppet/application/device.rb +71 -46
  27. data/lib/puppet/application/doc.rb +9 -9
  28. data/lib/puppet/application/face_base.rb +8 -13
  29. data/lib/puppet/application/filebucket.rb +8 -8
  30. data/lib/puppet/application/lookup.rb +101 -88
  31. data/lib/puppet/application/master.rb +15 -23
  32. data/lib/puppet/application/resource.rb +20 -17
  33. data/lib/puppet/application.rb +11 -11
  34. data/lib/puppet/configurer/downloader.rb +2 -2
  35. data/lib/puppet/configurer/fact_handler.rb +13 -4
  36. data/lib/puppet/configurer.rb +29 -28
  37. data/lib/puppet/context/trusted_information.rb +1 -1
  38. data/lib/puppet/context.rb +5 -5
  39. data/lib/puppet/defaults.rb +58 -104
  40. data/lib/puppet/error.rb +1 -1
  41. data/lib/puppet/etc.rb +75 -39
  42. data/lib/puppet/external/pson/common.rb +4 -0
  43. data/lib/puppet/face/ca.rb +50 -43
  44. data/lib/puppet/face/catalog/select.rb +4 -4
  45. data/lib/puppet/face/catalog.rb +2 -2
  46. data/lib/puppet/face/certificate.rb +21 -21
  47. data/lib/puppet/face/certificate_request.rb +1 -1
  48. data/lib/puppet/face/certificate_revocation_list.rb +1 -1
  49. data/lib/puppet/face/config.rb +10 -10
  50. data/lib/puppet/face/epp.rb +38 -38
  51. data/lib/puppet/face/facts.rb +5 -5
  52. data/lib/puppet/face/generate.rb +8 -8
  53. data/lib/puppet/face/help.rb +8 -8
  54. data/lib/puppet/face/key.rb +3 -3
  55. data/lib/puppet/face/man.rb +7 -7
  56. data/lib/puppet/face/module/build.rb +7 -7
  57. data/lib/puppet/face/module/changes.rb +6 -6
  58. data/lib/puppet/face/module/generate.rb +24 -24
  59. data/lib/puppet/face/module/install.rb +13 -9
  60. data/lib/puppet/face/module/list.rb +16 -12
  61. data/lib/puppet/face/module/search.rb +4 -4
  62. data/lib/puppet/face/module/uninstall.rb +13 -10
  63. data/lib/puppet/face/module/upgrade.rb +11 -7
  64. data/lib/puppet/face/module.rb +3 -3
  65. data/lib/puppet/face/node/clean.rb +8 -8
  66. data/lib/puppet/face/node.rb +6 -6
  67. data/lib/puppet/face/parser.rb +17 -17
  68. data/lib/puppet/face/plugin.rb +7 -7
  69. data/lib/puppet/face/report.rb +10 -10
  70. data/lib/puppet/face/resource.rb +13 -13
  71. data/lib/puppet/face/status.rb +5 -5
  72. data/lib/puppet/feature/base.rb +4 -3
  73. data/lib/puppet/feature/eventlog.rb +1 -1
  74. data/lib/puppet/file_bucket/dipper.rb +9 -9
  75. data/lib/puppet/file_bucket/file.rb +4 -17
  76. data/lib/puppet/file_serving/base.rb +3 -3
  77. data/lib/puppet/file_serving/configuration/parser.rb +12 -12
  78. data/lib/puppet/file_serving/configuration.rb +3 -3
  79. data/lib/puppet/file_serving/content.rb +1 -1
  80. data/lib/puppet/file_serving/fileset.rb +7 -5
  81. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  82. data/lib/puppet/file_serving/metadata.rb +9 -9
  83. data/lib/puppet/file_serving/mount/file.rb +6 -6
  84. data/lib/puppet/file_serving/mount/modules.rb +1 -1
  85. data/lib/puppet/file_serving/mount.rb +1 -1
  86. data/lib/puppet/file_serving/terminus_selector.rb +1 -1
  87. data/lib/puppet/file_system/file_impl.rb +2 -2
  88. data/lib/puppet/file_system/memory_impl.rb +1 -1
  89. data/lib/puppet/file_system/path_pattern.rb +6 -6
  90. data/lib/puppet/file_system/uniquefile.rb +2 -2
  91. data/lib/puppet/file_system/windows.rb +3 -3
  92. data/lib/puppet/forge/cache.rb +1 -0
  93. data/lib/puppet/forge/errors.rb +12 -12
  94. data/lib/puppet/forge/repository.rb +2 -1
  95. data/lib/puppet/forge.rb +10 -8
  96. data/lib/puppet/functions/annotate.rb +108 -0
  97. data/lib/puppet/functions/binary_file.rb +1 -1
  98. data/lib/puppet/functions/call.rb +42 -0
  99. data/lib/puppet/functions/defined.rb +4 -4
  100. data/lib/puppet/functions/dig.rb +1 -1
  101. data/lib/puppet/functions/eyaml_lookup_key.rb +16 -12
  102. data/lib/puppet/functions/hiera.rb +9 -2
  103. data/lib/puppet/functions/hiera_array.rb +9 -2
  104. data/lib/puppet/functions/hiera_hash.rb +10 -2
  105. data/lib/puppet/functions/hiera_include.rb +18 -4
  106. data/lib/puppet/functions/hocon_data.rb +8 -2
  107. data/lib/puppet/functions/json_data.rb +5 -1
  108. data/lib/puppet/functions/match.rb +2 -2
  109. data/lib/puppet/functions/reduce.rb +14 -2
  110. data/lib/puppet/functions/require.rb +1 -1
  111. data/lib/puppet/functions/slice.rb +3 -3
  112. data/lib/puppet/functions/strftime.rb +10 -2
  113. data/lib/puppet/functions/unique.rb +132 -0
  114. data/lib/puppet/functions/yaml_data.rb +4 -0
  115. data/lib/puppet/functions.rb +17 -45
  116. data/lib/puppet/generate/models/type/type.rb +6 -5
  117. data/lib/puppet/generate/templates/type/pcore.erb +1 -1
  118. data/lib/puppet/generate/type.rb +12 -12
  119. data/lib/puppet/graph/relationship_graph.rb +4 -1
  120. data/lib/puppet/graph/simple_graph.rb +45 -66
  121. data/lib/puppet/indirector/catalog/compiler.rb +61 -44
  122. data/lib/puppet/indirector/catalog/json.rb +18 -0
  123. data/lib/puppet/indirector/certificate/disabled_ca.rb +1 -1
  124. data/lib/puppet/indirector/certificate_request/ca.rb +3 -3
  125. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +1 -1
  126. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +1 -1
  127. data/lib/puppet/indirector/certificate_status/file.rb +6 -6
  128. data/lib/puppet/indirector/exec.rb +2 -2
  129. data/lib/puppet/indirector/face.rb +18 -18
  130. data/lib/puppet/indirector/file_bucket_file/file.rb +9 -8
  131. data/lib/puppet/indirector/file_metadata/http.rb +1 -1
  132. data/lib/puppet/indirector/file_server.rb +10 -2
  133. data/lib/puppet/indirector/hiera.rb +5 -3
  134. data/lib/puppet/indirector/indirection.rb +13 -15
  135. data/lib/puppet/indirector/json.rb +11 -12
  136. data/lib/puppet/indirector/key/disabled_ca.rb +1 -1
  137. data/lib/puppet/indirector/key/file.rb +2 -2
  138. data/lib/puppet/indirector/ldap.rb +6 -5
  139. data/lib/puppet/indirector/memory.rb +1 -1
  140. data/lib/puppet/indirector/msgpack.rb +8 -7
  141. data/lib/puppet/indirector/node/exec.rb +8 -6
  142. data/lib/puppet/indirector/node/ldap.rb +9 -7
  143. data/lib/puppet/indirector/node/plain.rb +2 -1
  144. data/lib/puppet/indirector/node/write_only_yaml.rb +6 -1
  145. data/lib/puppet/indirector/node/yaml.rb +0 -9
  146. data/lib/puppet/indirector/report/processor.rb +2 -2
  147. data/lib/puppet/indirector/report/rest.rb +13 -0
  148. data/lib/puppet/indirector/request.rb +9 -16
  149. data/lib/puppet/indirector/resource/ral.rb +1 -1
  150. data/lib/puppet/indirector/resource/validator.rb +1 -1
  151. data/lib/puppet/indirector/rest.rb +28 -10
  152. data/lib/puppet/indirector/ssl_file.rb +9 -9
  153. data/lib/puppet/indirector/terminus.rb +3 -3
  154. data/lib/puppet/indirector/yaml.rb +5 -5
  155. data/lib/puppet/indirector.rb +2 -2
  156. data/lib/puppet/info_service/class_information_service.rb +4 -5
  157. data/lib/puppet/interface/face_collection.rb +6 -1
  158. data/lib/puppet/interface.rb +2 -6
  159. data/lib/puppet/module.rb +12 -7
  160. data/lib/puppet/module_tool/applications/application.rb +8 -9
  161. data/lib/puppet/module_tool/applications/builder.rb +5 -6
  162. data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
  163. data/lib/puppet/module_tool/applications/installer.rb +11 -10
  164. data/lib/puppet/module_tool/applications/searcher.rb +1 -1
  165. data/lib/puppet/module_tool/applications/uninstaller.rb +2 -1
  166. data/lib/puppet/module_tool/applications/unpacker.rb +3 -3
  167. data/lib/puppet/module_tool/applications/upgrader.rb +10 -9
  168. data/lib/puppet/module_tool/contents_description.rb +1 -1
  169. data/lib/puppet/module_tool/dependency.rb +0 -1
  170. data/lib/puppet/module_tool/errors/installer.rb +22 -22
  171. data/lib/puppet/module_tool/errors/shared.rb +44 -42
  172. data/lib/puppet/module_tool/errors/uninstaller.rb +13 -9
  173. data/lib/puppet/module_tool/errors/upgrader.rb +11 -11
  174. data/lib/puppet/module_tool/install_directory.rb +1 -1
  175. data/lib/puppet/module_tool/installed_modules.rb +3 -3
  176. data/lib/puppet/module_tool/local_tarball.rb +4 -4
  177. data/lib/puppet/module_tool/metadata.rb +16 -13
  178. data/lib/puppet/module_tool/shared_behaviors.rb +6 -6
  179. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +1 -1
  180. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +10 -4
  181. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +2 -2
  182. data/lib/puppet/module_tool/skeleton/templates/generator/examples/init.pp.erb +1 -1
  183. data/lib/puppet/module_tool/tar.rb +5 -4
  184. data/lib/puppet/module_tool.rb +7 -3
  185. data/lib/puppet/network/auth_config_parser.rb +12 -11
  186. data/lib/puppet/network/authconfig.rb +2 -2
  187. data/lib/puppet/network/authstore.rb +2 -2
  188. data/lib/puppet/network/format.rb +7 -7
  189. data/lib/puppet/network/format_handler.rb +12 -9
  190. data/lib/puppet/network/format_support.rb +11 -5
  191. data/lib/puppet/network/formats.rb +38 -27
  192. data/lib/puppet/network/http/api/indirected_routes.rb +72 -33
  193. data/lib/puppet/network/http/api/master/v3/environment.rb +33 -14
  194. data/lib/puppet/network/http/compression.rb +10 -7
  195. data/lib/puppet/network/http/connection.rb +19 -15
  196. data/lib/puppet/network/http/error.rb +14 -10
  197. data/lib/puppet/network/http/handler.rb +8 -4
  198. data/lib/puppet/network/http/issues.rb +1 -0
  199. data/lib/puppet/network/http/pool.rb +1 -1
  200. data/lib/puppet/network/http/rack/rest.rb +3 -2
  201. data/lib/puppet/network/http/rack.rb +2 -2
  202. data/lib/puppet/network/http/request.rb +34 -20
  203. data/lib/puppet/network/http/response.rb +13 -1
  204. data/lib/puppet/network/http/webrick/rest.rb +2 -2
  205. data/lib/puppet/network/http/webrick.rb +5 -5
  206. data/lib/puppet/network/rights.rb +6 -6
  207. data/lib/puppet/network/server.rb +2 -2
  208. data/lib/puppet/node/environment.rb +21 -4
  209. data/lib/puppet/node/facts.rb +0 -5
  210. data/lib/puppet/node.rb +25 -13
  211. data/lib/puppet/parameter/package_options.rb +1 -1
  212. data/lib/puppet/parameter/path.rb +3 -3
  213. data/lib/puppet/parameter/value_collection.rb +4 -4
  214. data/lib/puppet/parameter.rb +3 -28
  215. data/lib/puppet/parser/ast/node.rb +1 -1
  216. data/lib/puppet/parser/ast/pops_bridge.rb +3 -3
  217. data/lib/puppet/parser/ast/resource.rb +1 -1
  218. data/lib/puppet/parser/ast/resource_instance.rb +1 -1
  219. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  220. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -2
  221. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +6 -9
  222. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +1 -1
  223. data/lib/puppet/parser/compiler.rb +44 -113
  224. data/lib/puppet/parser/e4_parser_adapter.rb +1 -2
  225. data/lib/puppet/parser/environment_compiler.rb +13 -15
  226. data/lib/puppet/parser/functions/contain.rb +1 -1
  227. data/lib/puppet/parser/functions/create_resources.rb +11 -3
  228. data/lib/puppet/parser/functions/file.rb +1 -1
  229. data/lib/puppet/parser/functions/generate.rb +5 -4
  230. data/lib/puppet/parser/functions/hiera_include.rb +1 -1
  231. data/lib/puppet/parser/functions/include.rb +2 -1
  232. data/lib/puppet/parser/functions/inline_template.rb +1 -1
  233. data/lib/puppet/parser/functions/new.rb +14 -1
  234. data/lib/puppet/parser/functions/require.rb +1 -1
  235. data/lib/puppet/parser/functions.rb +6 -6
  236. data/lib/puppet/parser/parser_factory.rb +0 -30
  237. data/lib/puppet/parser/relationship.rb +49 -20
  238. data/lib/puppet/parser/resource/param.rb +0 -3
  239. data/lib/puppet/parser/resource.rb +31 -30
  240. data/lib/puppet/parser/scope.rb +124 -170
  241. data/lib/puppet/parser/templatewrapper.rb +2 -2
  242. data/lib/puppet/parser/type_loader.rb +1 -1
  243. data/lib/puppet/plugins/configuration.rb +15 -67
  244. data/lib/puppet/plugins/syntax_checkers.rb +6 -11
  245. data/lib/puppet/pops/adaptable.rb +8 -3
  246. data/lib/puppet/pops/adapters.rb +33 -87
  247. data/lib/puppet/pops/evaluator/access_operator.rb +10 -39
  248. data/lib/puppet/pops/evaluator/collector_transformer.rb +9 -14
  249. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +2 -2
  250. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +3 -3
  251. data/lib/puppet/pops/evaluator/compare_operator.rb +7 -7
  252. data/lib/puppet/pops/evaluator/epp_evaluator.rb +1 -1
  253. data/lib/puppet/pops/evaluator/evaluator_impl.rb +45 -37
  254. data/lib/puppet/pops/evaluator/external_syntax_support.rb +2 -9
  255. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -2
  256. data/lib/puppet/pops/evaluator/puppet_proc.rb +1 -1
  257. data/lib/puppet/pops/evaluator/relationship_operator.rb +26 -9
  258. data/lib/puppet/pops/evaluator/runtime3_converter.rb +17 -1
  259. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +0 -2
  260. data/lib/puppet/pops/evaluator/runtime3_support.rb +44 -30
  261. data/lib/puppet/pops/functions/dispatch.rb +1 -6
  262. data/lib/puppet/pops/issues.rb +189 -161
  263. data/lib/puppet/pops/loader/base_loader.rb +2 -2
  264. data/lib/puppet/pops/loader/gem_support.rb +2 -2
  265. data/lib/puppet/pops/loader/loader.rb +4 -0
  266. data/lib/puppet/pops/loader/module_loaders.rb +59 -10
  267. data/lib/puppet/pops/loader/predefined_loader.rb +1 -6
  268. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +8 -8
  269. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +9 -10
  270. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +3 -3
  271. data/lib/puppet/pops/loader/static_loader.rb +32 -63
  272. data/lib/puppet/pops/loader/type_definition_instantiator.rb +8 -8
  273. data/lib/puppet/pops/loader/typed_name.rb +6 -0
  274. data/lib/puppet/pops/loaders.rb +22 -20
  275. data/lib/puppet/pops/lookup/context.rb +1 -1
  276. data/lib/puppet/pops/lookup/data_provider.rb +3 -18
  277. data/lib/puppet/pops/lookup/environment_data_provider.rb +1 -1
  278. data/lib/puppet/pops/lookup/global_data_provider.rb +7 -10
  279. data/lib/puppet/pops/lookup/hiera_config.rb +13 -34
  280. data/lib/puppet/pops/lookup/interpolation.rb +9 -8
  281. data/lib/puppet/pops/lookup/invocation.rb +13 -3
  282. data/lib/puppet/pops/lookup/lookup_adapter.rb +30 -69
  283. data/lib/puppet/pops/lookup/lookup_key.rb +2 -2
  284. data/lib/puppet/pops/lookup/module_data_provider.rb +11 -3
  285. data/lib/puppet/pops/lookup/sub_lookup.rb +12 -10
  286. data/lib/puppet/pops/lookup.rb +7 -5
  287. data/lib/puppet/pops/merge_strategy.rb +16 -1
  288. data/lib/puppet/pops/model/ast.pp +692 -0
  289. data/lib/puppet/pops/model/ast.rb +4833 -0
  290. data/lib/puppet/pops/model/ast_transformer.rb +9 -10
  291. data/lib/puppet/pops/model/factory.rb +454 -527
  292. data/lib/puppet/pops/model/model_label_provider.rb +3 -2
  293. data/lib/puppet/pops/model/model_tree_dumper.rb +8 -7
  294. data/lib/puppet/pops/parser/egrammar.ra +66 -60
  295. data/lib/puppet/pops/parser/eparser.rb +1483 -1578
  296. data/lib/puppet/pops/parser/evaluating_parser.rb +5 -5
  297. data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
  298. data/lib/puppet/pops/parser/lexer2.rb +27 -36
  299. data/lib/puppet/pops/parser/locator.rb +39 -16
  300. data/lib/puppet/pops/parser/parser_support.rb +25 -29
  301. data/lib/puppet/pops/pcore.rb +28 -21
  302. data/lib/puppet/pops/resource/param.rb +1 -1
  303. data/lib/puppet/pops/resource/resource_type_impl.rb +3 -3
  304. data/lib/puppet/pops/semantic_error.rb +12 -0
  305. data/lib/puppet/pops/serialization/abstract_writer.rb +9 -1
  306. data/lib/puppet/pops/serialization/deserializer.rb +8 -5
  307. data/lib/puppet/pops/serialization/from_data_converter.rb +181 -0
  308. data/lib/puppet/pops/serialization/json.rb +4 -4
  309. data/lib/puppet/pops/serialization/json_path.rb +126 -0
  310. data/lib/puppet/pops/serialization/object.rb +6 -6
  311. data/lib/puppet/pops/serialization/serializer.rb +32 -11
  312. data/lib/puppet/pops/serialization/to_data_converter.rb +292 -0
  313. data/lib/puppet/pops/serialization.rb +25 -1
  314. data/lib/puppet/pops/time/timespan.rb +11 -11
  315. data/lib/puppet/pops/time/timestamp.rb +8 -8
  316. data/lib/puppet/pops/types/annotatable.rb +7 -7
  317. data/lib/puppet/pops/types/annotation.rb +71 -0
  318. data/lib/puppet/pops/types/class_loader.rb +4 -6
  319. data/lib/puppet/pops/types/enumeration.rb +2 -2
  320. data/lib/puppet/pops/types/iterable.rb +2 -2
  321. data/lib/puppet/pops/types/p_binary_type.rb +7 -1
  322. data/lib/puppet/pops/types/p_meta_type.rb +16 -12
  323. data/lib/puppet/pops/types/p_object_type.rb +135 -96
  324. data/lib/puppet/pops/types/p_runtime_type.rb +1 -1
  325. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +6 -2
  326. data/lib/puppet/pops/types/p_timespan_type.rb +55 -4
  327. data/lib/puppet/pops/types/p_type_set_type.rb +44 -36
  328. data/lib/puppet/pops/types/puppet_object.rb +13 -3
  329. data/lib/puppet/pops/types/ruby_generator.rb +291 -127
  330. data/lib/puppet/pops/types/ruby_method.rb +31 -0
  331. data/lib/puppet/pops/types/string_converter.rb +125 -59
  332. data/lib/puppet/pops/types/type_calculator.rb +55 -93
  333. data/lib/puppet/pops/types/type_factory.rb +34 -6
  334. data/lib/puppet/pops/types/type_formatter.rb +63 -15
  335. data/lib/puppet/pops/types/type_mismatch_describer.rb +8 -7
  336. data/lib/puppet/pops/types/type_parser.rb +28 -13
  337. data/lib/puppet/pops/types/type_set_reference.rb +7 -7
  338. data/lib/puppet/pops/types/types.rb +186 -186
  339. data/lib/puppet/pops/utils.rb +0 -24
  340. data/lib/puppet/pops/validation/checker4_0.rb +89 -75
  341. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
  342. data/lib/puppet/pops/validation.rb +3 -9
  343. data/lib/puppet/pops/visitor.rb +21 -0
  344. data/lib/puppet/pops.rb +7 -37
  345. data/lib/puppet/property/ensure.rb +3 -3
  346. data/lib/puppet/property/list.rb +1 -10
  347. data/lib/puppet/property.rb +17 -14
  348. data/lib/puppet/provider/aixobject.rb +7 -7
  349. data/lib/puppet/provider/augeas/augeas.rb +37 -37
  350. data/lib/puppet/provider/command.rb +1 -1
  351. data/lib/puppet/provider/cron/crontab.rb +2 -2
  352. data/lib/puppet/provider/exec/posix.rb +4 -4
  353. data/lib/puppet/provider/exec/windows.rb +3 -3
  354. data/lib/puppet/provider/exec.rb +4 -4
  355. data/lib/puppet/provider/file/posix.rb +5 -5
  356. data/lib/puppet/provider/file/windows.rb +4 -4
  357. data/lib/puppet/provider/group/aix.rb +2 -2
  358. data/lib/puppet/provider/group/groupadd.rb +2 -2
  359. data/lib/puppet/provider/group/pw.rb +1 -1
  360. data/lib/puppet/provider/host/parsed.rb +1 -1
  361. data/lib/puppet/provider/macauthorization/macauthorization.rb +9 -9
  362. data/lib/puppet/provider/maillist/mailman.rb +2 -2
  363. data/lib/puppet/provider/mcx/mcxcontent.rb +3 -3
  364. data/lib/puppet/provider/mount/parsed.rb +10 -8
  365. data/lib/puppet/provider/mount.rb +2 -1
  366. data/lib/puppet/provider/naginator.rb +1 -1
  367. data/lib/puppet/provider/nameservice/directoryservice.rb +11 -11
  368. data/lib/puppet/provider/nameservice.rb +18 -10
  369. data/lib/puppet/provider/network_device.rb +2 -1
  370. data/lib/puppet/provider/package/aix.rb +5 -5
  371. data/lib/puppet/provider/package/appdmg.rb +2 -2
  372. data/lib/puppet/provider/package/apple.rb +1 -1
  373. data/lib/puppet/provider/package/apt.rb +4 -4
  374. data/lib/puppet/provider/package/aptitude.rb +1 -1
  375. data/lib/puppet/provider/package/aptrpm.rb +2 -2
  376. data/lib/puppet/provider/package/blastwave.rb +4 -4
  377. data/lib/puppet/provider/package/dpkg.rb +3 -3
  378. data/lib/puppet/provider/package/fink.rb +3 -3
  379. data/lib/puppet/provider/package/freebsd.rb +1 -1
  380. data/lib/puppet/provider/package/gem.rb +6 -6
  381. data/lib/puppet/provider/package/hpux.rb +1 -1
  382. data/lib/puppet/provider/package/nim.rb +15 -12
  383. data/lib/puppet/provider/package/openbsd.rb +4 -4
  384. data/lib/puppet/provider/package/opkg.rb +1 -1
  385. data/lib/puppet/provider/package/pacman.rb +9 -9
  386. data/lib/puppet/provider/package/pkg.rb +9 -9
  387. data/lib/puppet/provider/package/pkgdmg.rb +4 -4
  388. data/lib/puppet/provider/package/pkgin.rb +3 -3
  389. data/lib/puppet/provider/package/pkgng.rb +1 -1
  390. data/lib/puppet/provider/package/pkgutil.rb +6 -6
  391. data/lib/puppet/provider/package/portage.rb +167 -59
  392. data/lib/puppet/provider/package/ports.rb +3 -3
  393. data/lib/puppet/provider/package/portupgrade.rb +4 -4
  394. data/lib/puppet/provider/package/rpm.rb +7 -4
  395. data/lib/puppet/provider/package/rug.rb +1 -1
  396. data/lib/puppet/provider/package/sun.rb +3 -2
  397. data/lib/puppet/provider/package/up2date.rb +1 -1
  398. data/lib/puppet/provider/package/urpmi.rb +1 -1
  399. data/lib/puppet/provider/package/windows/package.rb +3 -3
  400. data/lib/puppet/provider/package/windows.rb +4 -4
  401. data/lib/puppet/provider/package/yum.rb +13 -13
  402. data/lib/puppet/provider/package/zypper.rb +1 -1
  403. data/lib/puppet/provider/parsedfile.rb +1 -1
  404. data/lib/puppet/provider/service/upstart.rb +0 -2
  405. data/lib/puppet/provider/user/aix.rb +1 -1
  406. data/lib/puppet/provider/user/ldap.rb +1 -1
  407. data/lib/puppet/provider/user/useradd.rb +1 -1
  408. data/lib/puppet/provider/yumrepo/inifile.rb +3 -3
  409. data/lib/puppet/provider.rb +2 -0
  410. data/lib/puppet/reference/configuration.rb +1 -1
  411. data/lib/puppet/reference/indirection.rb +1 -1
  412. data/lib/puppet/reference/metaparameter.rb +1 -1
  413. data/lib/puppet/reference/providers.rb +6 -6
  414. data/lib/puppet/reference/type.rb +2 -2
  415. data/lib/puppet/relationship.rb +7 -9
  416. data/lib/puppet/reports/http.rb +6 -2
  417. data/lib/puppet/resource/capability_finder.rb +2 -2
  418. data/lib/puppet/resource/catalog.rb +26 -41
  419. data/lib/puppet/resource/status.rb +13 -24
  420. data/lib/puppet/resource/type.rb +13 -61
  421. data/lib/puppet/resource/type_collection.rb +30 -23
  422. data/lib/puppet/resource.rb +85 -108
  423. data/lib/puppet/settings/array_setting.rb +1 -1
  424. data/lib/puppet/settings/autosign_setting.rb +1 -1
  425. data/lib/puppet/settings/boolean_setting.rb +1 -1
  426. data/lib/puppet/settings/config_file.rb +2 -2
  427. data/lib/puppet/settings/duration_setting.rb +1 -1
  428. data/lib/puppet/settings/enum_setting.rb +1 -1
  429. data/lib/puppet/settings/environment_conf.rb +2 -2
  430. data/lib/puppet/settings/file_setting.rb +2 -2
  431. data/lib/puppet/settings/priority_setting.rb +1 -1
  432. data/lib/puppet/settings/server_list_setting.rb +1 -1
  433. data/lib/puppet/settings/symbolic_enum_setting.rb +1 -1
  434. data/lib/puppet/settings/terminus_setting.rb +1 -1
  435. data/lib/puppet/settings/ttl_setting.rb +2 -2
  436. data/lib/puppet/settings.rb +1 -1
  437. data/lib/puppet/ssl/base.rb +2 -2
  438. data/lib/puppet/ssl/certificate_authority/interface.rb +13 -13
  439. data/lib/puppet/ssl/certificate_authority.rb +21 -21
  440. data/lib/puppet/ssl/certificate_factory.rb +2 -2
  441. data/lib/puppet/ssl/certificate_request.rb +14 -14
  442. data/lib/puppet/ssl/certificate_request_attributes.rb +3 -3
  443. data/lib/puppet/ssl/certificate_revocation_list.rb +3 -3
  444. data/lib/puppet/ssl/host.rb +29 -29
  445. data/lib/puppet/ssl/inventory.rb +1 -1
  446. data/lib/puppet/ssl/key.rb +1 -1
  447. data/lib/puppet/ssl/oids.rb +5 -5
  448. data/lib/puppet/ssl/validator/default_validator.rb +3 -4
  449. data/lib/puppet/syntax_checkers/base64.rb +7 -7
  450. data/lib/puppet/syntax_checkers/json.rb +5 -5
  451. data/lib/puppet/test/test_helper.rb +0 -4
  452. data/lib/puppet/transaction/additional_resource_generator.rb +4 -3
  453. data/lib/puppet/transaction/event.rb +19 -8
  454. data/lib/puppet/transaction/event_manager.rb +6 -6
  455. data/lib/puppet/transaction/persistence.rb +6 -6
  456. data/lib/puppet/transaction/report.rb +35 -41
  457. data/lib/puppet/transaction/resource_harness.rb +14 -12
  458. data/lib/puppet/transaction.rb +38 -20
  459. data/lib/puppet/type/augeas.rb +2 -2
  460. data/lib/puppet/type/cron.rb +14 -31
  461. data/lib/puppet/type/exec.rb +48 -42
  462. data/lib/puppet/type/file/content.rb +1 -1
  463. data/lib/puppet/type/file/group.rb +3 -3
  464. data/lib/puppet/type/file/mode.rb +10 -6
  465. data/lib/puppet/type/file/owner.rb +3 -3
  466. data/lib/puppet/type/file/selcontext.rb +18 -1
  467. data/lib/puppet/type/file/source.rb +14 -4
  468. data/lib/puppet/type/file.rb +21 -22
  469. data/lib/puppet/type/filebucket.rb +3 -8
  470. data/lib/puppet/type/group.rb +2 -2
  471. data/lib/puppet/type/host.rb +6 -6
  472. data/lib/puppet/type/interface.rb +1 -1
  473. data/lib/puppet/type/k5login.rb +1 -1
  474. data/lib/puppet/type/macauthorization.rb +1 -1
  475. data/lib/puppet/type/mailalias.rb +2 -18
  476. data/lib/puppet/type/maillist.rb +1 -1
  477. data/lib/puppet/type/mount.rb +8 -8
  478. data/lib/puppet/type/notify.rb +2 -0
  479. data/lib/puppet/type/package.rb +5 -5
  480. data/lib/puppet/type/resources.rb +6 -6
  481. data/lib/puppet/type/schedule.rb +9 -9
  482. data/lib/puppet/type/scheduled_task.rb +4 -4
  483. data/lib/puppet/type/service.rb +1 -1
  484. data/lib/puppet/type/ssh_authorized_key.rb +3 -19
  485. data/lib/puppet/type/sshkey.rb +4 -4
  486. data/lib/puppet/type/tidy.rb +15 -11
  487. data/lib/puppet/type/user.rb +29 -27
  488. data/lib/puppet/type/yumrepo.rb +8 -8
  489. data/lib/puppet/type/zone.rb +7 -7
  490. data/lib/puppet/type/zpool.rb +3 -3
  491. data/lib/puppet/type.rb +0 -6
  492. data/lib/puppet/util/at_fork/noop.rb +18 -0
  493. data/lib/puppet/util/at_fork/solaris.rb +158 -0
  494. data/lib/puppet/util/at_fork.rb +35 -0
  495. data/lib/puppet/util/autoload.rb +2 -2
  496. data/lib/puppet/util/backups.rb +6 -6
  497. data/lib/puppet/util/character_encoding.rb +77 -74
  498. data/lib/puppet/util/classgen.rb +4 -4
  499. data/lib/puppet/util/command_line/puppet_option_parser.rb +3 -3
  500. data/lib/puppet/util/command_line/trollop.rb +31 -31
  501. data/lib/puppet/util/command_line.rb +4 -4
  502. data/lib/puppet/util/diff.rb +1 -1
  503. data/lib/puppet/util/errors.rb +4 -4
  504. data/lib/puppet/util/execution.rb +8 -8
  505. data/lib/puppet/util/feature.rb +5 -5
  506. data/lib/puppet/util/fileparsing.rb +8 -8
  507. data/lib/puppet/util/filetype.rb +15 -15
  508. data/lib/puppet/util/http_proxy.rb +1 -1
  509. data/lib/puppet/util/inifile.rb +4 -4
  510. data/lib/puppet/util/instance_loader.rb +1 -1
  511. data/lib/puppet/util/json_lockfile.rb +4 -4
  512. data/lib/puppet/util/ldap/connection.rb +2 -2
  513. data/lib/puppet/util/ldap/manager.rb +2 -2
  514. data/lib/puppet/util/limits.rb +1 -1
  515. data/lib/puppet/util/log/destinations.rb +10 -16
  516. data/lib/puppet/util/log.rb +23 -16
  517. data/lib/puppet/util/logging.rb +11 -8
  518. data/lib/puppet/util/metric.rb +9 -6
  519. data/lib/puppet/util/monkey_patches.rb +30 -67
  520. data/lib/puppet/util/network_device/cisco/device.rb +7 -7
  521. data/lib/puppet/util/network_device/cisco/interface.rb +1 -1
  522. data/lib/puppet/util/network_device/config.rb +6 -6
  523. data/lib/puppet/util/network_device/transport/ssh.rb +6 -6
  524. data/lib/puppet/util/network_device.rb +1 -1
  525. data/lib/puppet/util/plist.rb +4 -2
  526. data/lib/puppet/util/posix.rb +5 -5
  527. data/lib/puppet/util/profiler/wall_clock.rb +1 -1
  528. data/lib/puppet/util/provider_features.rb +1 -1
  529. data/lib/puppet/util/psych_support.rb +3 -11
  530. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  531. data/lib/puppet/util/rdoc.rb +4 -4
  532. data/lib/puppet/util/reference.rb +5 -5
  533. data/lib/puppet/util/resource_template.rb +1 -1
  534. data/lib/puppet/util/retry_action.rb +2 -2
  535. data/lib/puppet/util/selinux.rb +54 -12
  536. data/lib/puppet/util/splayer.rb +1 -1
  537. data/lib/puppet/util/storage.rb +5 -5
  538. data/lib/puppet/util/suidmanager.rb +4 -4
  539. data/lib/puppet/util/symbolic_file_mode.rb +9 -9
  540. data/lib/puppet/util/tag_set.rb +1 -4
  541. data/lib/puppet/util/tagging.rb +2 -2
  542. data/lib/puppet/util/windows/adsi.rb +14 -14
  543. data/lib/puppet/util/windows/api_types.rb +5 -2
  544. data/lib/puppet/util/windows/com.rb +4 -4
  545. data/lib/puppet/util/windows/error.rb +2 -2
  546. data/lib/puppet/util/windows/eventlog.rb +192 -0
  547. data/lib/puppet/util/windows/file.rb +4 -4
  548. data/lib/puppet/util/windows/principal.rb +6 -5
  549. data/lib/puppet/util/windows/process.rb +5 -5
  550. data/lib/puppet/util/windows/registry.rb +11 -11
  551. data/lib/puppet/util/windows/root_certs.rb +1 -1
  552. data/lib/puppet/util/windows/security.rb +14 -14
  553. data/lib/puppet/util/windows/sid.rb +6 -6
  554. data/lib/puppet/util/windows/taskscheduler.rb +62 -62
  555. data/lib/puppet/util/windows/user.rb +6 -6
  556. data/lib/puppet/util/windows.rb +2 -0
  557. data/lib/puppet/util.rb +138 -14
  558. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +1 -1
  559. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +122 -114
  560. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +678 -342
  561. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +2 -10
  562. data/lib/puppet/version.rb +1 -1
  563. data/lib/puppet.rb +47 -33
  564. data/locales/config.yaml +1 -1
  565. data/locales/puppet.pot +7931 -29
  566. data/man/man5/puppet.conf.5 +0 -22
  567. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +9 -0
  568. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +9 -0
  569. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +9 -0
  570. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +9 -0
  571. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +9 -0
  572. data/spec/integration/application/apply_spec.rb +29 -22
  573. data/spec/integration/configurer_spec.rb +1 -1
  574. data/spec/integration/defaults_spec.rb +2 -2
  575. data/spec/integration/faces/documentation_spec.rb +2 -2
  576. data/spec/integration/indirector/file_content/file_server_spec.rb +1 -0
  577. data/spec/integration/indirector/file_metadata/file_server_spec.rb +1 -0
  578. data/spec/integration/parser/catalog_spec.rb +1 -1
  579. data/spec/integration/parser/class_spec.rb +6 -6
  580. data/spec/integration/parser/compiler_spec.rb +184 -142
  581. data/spec/integration/parser/dynamic_scoping_spec.rb +0 -1
  582. data/spec/integration/parser/pcore_resource_spec.rb +15 -0
  583. data/spec/integration/parser/scope_spec.rb +53 -4
  584. data/spec/integration/resource/catalog_spec.rb +0 -4
  585. data/spec/integration/resource/type_collection_spec.rb +6 -0
  586. data/spec/integration/transaction/report_spec.rb +2 -2
  587. data/spec/integration/transaction_spec.rb +2 -2
  588. data/spec/integration/type/file_spec.rb +29 -0
  589. data/spec/integration/type/package_spec.rb +7 -1
  590. data/spec/lib/matchers/json.rb +3 -3
  591. data/spec/lib/puppet/face/1.0.0/huzzah.rb +1 -1
  592. data/spec/lib/puppet/face/basetest.rb +1 -1
  593. data/spec/lib/puppet/face/huzzah.rb +1 -1
  594. data/spec/lib/puppet/face/version_matching.rb +1 -1
  595. data/spec/lib/puppet/indirector_testing.rb +4 -0
  596. data/spec/lib/puppet_spec/character_encoding.rb +12 -0
  597. data/spec/lib/puppet_spec/compiler.rb +8 -1
  598. data/spec/lib/puppet_spec/modules.rb +2 -2
  599. data/spec/lib/puppet_spec/network.rb +10 -6
  600. data/spec/shared_contexts/types_setup.rb +52 -15
  601. data/spec/shared_examples/rhel_package_provider.rb +10 -11
  602. data/spec/spec_helper.rb +0 -11
  603. data/spec/unit/agent_spec.rb +12 -1
  604. data/spec/unit/application/agent_spec.rb +7 -0
  605. data/spec/unit/application/apply_spec.rb +28 -13
  606. data/spec/unit/application/describe_spec.rb +19 -0
  607. data/spec/unit/application/device_spec.rb +41 -2
  608. data/spec/unit/application/face_base_spec.rb +6 -6
  609. data/spec/unit/application/master_spec.rb +22 -6
  610. data/spec/unit/application/resource_spec.rb +39 -1
  611. data/spec/unit/application_spec.rb +0 -6
  612. data/spec/unit/capability_spec.rb +2 -6
  613. data/spec/unit/configurer/fact_handler_spec.rb +76 -20
  614. data/spec/unit/configurer/plugin_handler_spec.rb +13 -19
  615. data/spec/unit/configurer_spec.rb +36 -19
  616. data/spec/unit/defaults_spec.rb +0 -30
  617. data/spec/unit/etc_spec.rb +361 -153
  618. data/spec/unit/face/module/list_spec.rb +60 -0
  619. data/spec/unit/file_bucket/file_spec.rb +3 -3
  620. data/spec/unit/file_serving/http_metadata_spec.rb +1 -1
  621. data/spec/unit/file_serving/metadata_spec.rb +35 -9
  622. data/spec/unit/forge/forge_spec.rb +112 -0
  623. data/spec/unit/forge/repository_spec.rb +4 -4
  624. data/spec/unit/functions/annotate_spec.rb +175 -0
  625. data/spec/unit/functions/break_spec.rb +29 -1
  626. data/spec/unit/functions/call_spec.rb +77 -0
  627. data/spec/unit/functions/contain_spec.rb +1 -1
  628. data/spec/unit/functions/lookup_fixture_spec.rb +1 -6
  629. data/spec/unit/functions/lookup_spec.rb +208 -3
  630. data/spec/unit/functions/new_spec.rb +1 -1
  631. data/spec/unit/functions/unique_spec.rb +111 -0
  632. data/spec/unit/functions4_spec.rb +2 -43
  633. data/spec/unit/graph/simple_graph_spec.rb +58 -55
  634. data/spec/unit/indirector/catalog/compiler_spec.rb +213 -153
  635. data/spec/unit/indirector/catalog/json_spec.rb +50 -1
  636. data/spec/unit/indirector/facts/facter_spec.rb +1 -2
  637. data/spec/unit/indirector/file_bucket_file/file_spec.rb +1 -1
  638. data/spec/unit/indirector/file_server_spec.rb +17 -2
  639. data/spec/unit/indirector/indirection_spec.rb +1 -36
  640. data/spec/unit/indirector/json_spec.rb +27 -6
  641. data/spec/unit/indirector/node/exec_spec.rb +12 -12
  642. data/spec/unit/indirector/node/ldap_spec.rb +29 -8
  643. data/spec/unit/indirector/node/plain_spec.rb +16 -6
  644. data/spec/unit/indirector/node/write_only_yaml_spec.rb +12 -0
  645. data/spec/unit/indirector/report/processor_spec.rb +2 -2
  646. data/spec/unit/indirector/report/rest_spec.rb +29 -3
  647. data/spec/unit/indirector/request_spec.rb +15 -4
  648. data/spec/unit/indirector/rest_spec.rb +57 -15
  649. data/spec/unit/interface/face_collection_spec.rb +7 -7
  650. data/spec/unit/module_spec.rb +10 -2
  651. data/spec/unit/module_tool/applications/installer_spec.rb +0 -1
  652. data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -1
  653. data/spec/unit/module_tool/tar_spec.rb +16 -10
  654. data/spec/unit/network/format_handler_spec.rb +11 -11
  655. data/spec/unit/network/format_spec.rb +9 -0
  656. data/spec/unit/network/formats_spec.rb +322 -138
  657. data/spec/unit/network/http/api/indirected_routes_spec.rb +65 -55
  658. data/spec/unit/network/http/api/master/v3/environment_spec.rb +128 -2
  659. data/spec/unit/network/http/api/master/v3_spec.rb +1 -1
  660. data/spec/unit/network/http/api_spec.rb +1 -1
  661. data/spec/unit/network/http/compression_spec.rb +105 -88
  662. data/spec/unit/network/http/error_spec.rb +1 -2
  663. data/spec/unit/network/http/handler_spec.rb +8 -12
  664. data/spec/unit/network/http/rack/rest_spec.rb +3 -3
  665. data/spec/unit/network/http/request_spec.rb +110 -0
  666. data/spec/unit/network/http/response_spec.rb +108 -0
  667. data/spec/unit/node/facts_spec.rb +13 -13
  668. data/spec/unit/node_spec.rb +33 -10
  669. data/spec/unit/parameter_spec.rb +73 -5
  670. data/spec/unit/parser/compiler_spec.rb +1 -1
  671. data/spec/unit/parser/environment_compiler_spec.rb +0 -2
  672. data/spec/unit/parser/functions/create_resources_spec.rb +47 -6
  673. data/spec/unit/parser/resource_spec.rb +86 -24
  674. data/spec/unit/parser/scope_spec.rb +10 -79
  675. data/spec/unit/pops/benchmark_spec.rb +8 -26
  676. data/spec/unit/pops/containment_spec.rb +0 -26
  677. data/spec/unit/pops/evaluator/access_ops_spec.rb +103 -103
  678. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +59 -6
  679. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +5 -5
  680. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +26 -26
  681. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +59 -7
  682. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +7 -7
  683. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +36 -1
  684. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +10 -10
  685. data/spec/unit/pops/evaluator/variables_spec.rb +1 -1
  686. data/spec/unit/pops/factory_rspec_helper.rb +0 -4
  687. data/spec/unit/pops/factory_spec.rb +83 -83
  688. data/spec/unit/pops/loaders/loaders_spec.rb +209 -79
  689. data/spec/unit/pops/loaders/static_loader_spec.rb +2 -6
  690. data/spec/unit/pops/lookup/interpolation_spec.rb +50 -10
  691. data/spec/unit/pops/lookup/lookup_spec.rb +32 -0
  692. data/spec/unit/pops/model/model_spec.rb +10 -10
  693. data/spec/unit/pops/parser/epp_parser_spec.rb +1 -1
  694. data/spec/unit/pops/parser/lexer2_spec.rb +32 -29
  695. data/spec/unit/pops/parser/{source_pos_adapter_spec.rb → locator_spec.rb} +9 -11
  696. data/spec/unit/pops/parser/parse_application_spec.rb +0 -3
  697. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +4 -4
  698. data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -3
  699. data/spec/unit/pops/parser/parse_containers_spec.rb +17 -19
  700. data/spec/unit/pops/parser/parse_site_spec.rb +0 -3
  701. data/spec/unit/pops/parser/parser_spec.rb +8 -10
  702. data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -3
  703. data/spec/unit/pops/serialization/serialization_spec.rb +117 -5
  704. data/spec/unit/pops/serialization/to_from_hr_spec.rb +494 -0
  705. data/spec/unit/pops/time/timestamp_spec.rb +13 -0
  706. data/spec/unit/pops/types/iterable_spec.rb +1 -1
  707. data/spec/unit/pops/types/p_object_type_spec.rb +100 -14
  708. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +12 -17
  709. data/spec/unit/pops/types/p_timestamp_type_spec.rb +8 -8
  710. data/spec/unit/pops/types/p_type_set_type_spec.rb +4 -12
  711. data/spec/unit/pops/types/ruby_generator_spec.rb +57 -20
  712. data/spec/unit/pops/types/string_converter_spec.rb +119 -16
  713. data/spec/unit/pops/types/type_acceptor_spec.rb +2 -2
  714. data/spec/unit/pops/types/type_calculator_spec.rb +211 -87
  715. data/spec/unit/pops/types/type_factory_spec.rb +9 -9
  716. data/spec/unit/pops/types/type_formatter_spec.rb +32 -19
  717. data/spec/unit/pops/types/type_parser_spec.rb +6 -6
  718. data/spec/unit/pops/types/types_spec.rb +53 -2
  719. data/spec/unit/pops/validator/validator_spec.rb +53 -61
  720. data/spec/unit/pops/visitor_spec.rb +1 -1
  721. data/spec/unit/property/list_spec.rb +2 -2
  722. data/spec/unit/provider/augeas/augeas_spec.rb +1 -1
  723. data/spec/unit/provider/nameservice/directoryservice_spec.rb +2 -0
  724. data/spec/unit/provider/nameservice_spec.rb +113 -3
  725. data/spec/unit/provider/package/portage_spec.rb +103 -17
  726. data/spec/unit/provider/package/rpm_spec.rb +14 -1
  727. data/spec/unit/provider/user/directoryservice_spec.rb +7 -7
  728. data/spec/unit/provider/user/useradd_spec.rb +13 -0
  729. data/spec/unit/puppet_spec.rb +2 -3
  730. data/spec/unit/relationship_spec.rb +15 -36
  731. data/spec/unit/reports/http_spec.rb +11 -8
  732. data/spec/unit/resource/catalog_spec.rb +81 -53
  733. data/spec/unit/resource/status_spec.rb +114 -103
  734. data/spec/unit/resource/type_collection_spec.rb +5 -5
  735. data/spec/unit/resource/type_spec.rb +4 -71
  736. data/spec/unit/resource_spec.rb +30 -34
  737. data/spec/unit/settings_spec.rb +4 -2
  738. data/spec/unit/ssl/host_spec.rb +34 -34
  739. data/spec/unit/status_spec.rb +7 -7
  740. data/spec/unit/transaction/event_spec.rb +18 -15
  741. data/spec/unit/transaction/report_spec.rb +100 -62
  742. data/spec/unit/transaction/resource_harness_spec.rb +3 -3
  743. data/spec/unit/transaction_spec.rb +53 -8
  744. data/spec/unit/type/file/group_spec.rb +2 -2
  745. data/spec/unit/type/file/mode_spec.rb +9 -9
  746. data/spec/unit/type/file/owner_spec.rb +2 -2
  747. data/spec/unit/type/file/selinux_spec.rb +2 -0
  748. data/spec/unit/type/file/source_spec.rb +13 -0
  749. data/spec/unit/type/file_spec.rb +46 -0
  750. data/spec/unit/type/ssh_authorized_key_spec.rb +2 -2
  751. data/spec/unit/type/user_spec.rb +2 -4
  752. data/spec/unit/util/at_fork_spec.rb +150 -0
  753. data/spec/unit/util/character_encoding_spec.rb +193 -52
  754. data/spec/unit/util/execution_spec.rb +31 -2
  755. data/spec/unit/util/log/destinations_spec.rb +5 -6
  756. data/spec/unit/util/log_spec.rb +62 -17
  757. data/spec/unit/util/metric_spec.rb +9 -2
  758. data/spec/unit/util/monkey_patches_spec.rb +6 -188
  759. data/spec/unit/util/run_mode_spec.rb +17 -10
  760. data/spec/unit/util/tag_set_spec.rb +2 -2
  761. data/spec/unit/util/tagging_spec.rb +55 -0
  762. data/spec/unit/util/windows/eventlog_spec.rb +123 -0
  763. data/spec/unit/util_spec.rb +237 -2
  764. data/tasks/benchmark.rake +3 -3
  765. data/tasks/cfpropertylist.rake +1 -1
  766. data/tasks/generate_ast_model.rake +78 -0
  767. metadata +3386 -3635
  768. checksums.yaml +0 -7
  769. data/bin/extlookup2hiera +0 -56
  770. data/ext/emacs/puppet-mode-init.el +0 -6
  771. data/ext/emacs/puppet-mode.el +0 -433
  772. data/ext/vim/README +0 -3
  773. data/ext/vim/ftdetect/puppet.vim +0 -2
  774. data/ext/vim/ftplugin/puppet.vim +0 -94
  775. data/ext/vim/indent/puppet.vim +0 -76
  776. data/ext/vim/syntax/puppet.vim +0 -115
  777. data/lib/puppet/application/file.rb +0 -4
  778. data/lib/puppet/application/inspect.rb +0 -182
  779. data/lib/puppet/application/resource_type.rb +0 -7
  780. data/lib/puppet/data_providers/data_adapter.rb +0 -37
  781. data/lib/puppet/data_providers/data_function_support.rb +0 -32
  782. data/lib/puppet/data_providers/function_env_data_provider.rb +0 -26
  783. data/lib/puppet/data_providers/function_module_data_provider.rb +0 -24
  784. data/lib/puppet/data_providers/hiera_config.rb +0 -151
  785. data/lib/puppet/data_providers/hiera_env_data_provider.rb +0 -25
  786. data/lib/puppet/data_providers/hiera_interpolate.rb +0 -21
  787. data/lib/puppet/data_providers/hiera_module_data_provider.rb +0 -30
  788. data/lib/puppet/data_providers/hiera_support.rb +0 -42
  789. data/lib/puppet/data_providers/json_data_provider_factory.rb +0 -38
  790. data/lib/puppet/data_providers/yaml_data_provider_factory.rb +0 -40
  791. data/lib/puppet/data_providers.rb +0 -34
  792. data/lib/puppet/face/file/download.rb +0 -56
  793. data/lib/puppet/face/file/store.rb +0 -21
  794. data/lib/puppet/face/file.rb +0 -50
  795. data/lib/puppet/face/resource_type.rb +0 -84
  796. data/lib/puppet/feature/cfacter.rb +0 -15
  797. data/lib/puppet/feature/external_facts.rb +0 -5
  798. data/lib/puppet/indirector/catalog/static_compiler.rb +0 -232
  799. data/lib/puppet/indirector/resource_type/parser.rb +0 -108
  800. data/lib/puppet/indirector/resource_type/rest.rb +0 -7
  801. data/lib/puppet/indirector/resource_type.rb +0 -5
  802. data/lib/puppet/parser/yaml_trimmer.rb +0 -7
  803. data/lib/puppet/plugins/binding_schemes.rb +0 -140
  804. data/lib/puppet/plugins/data_providers/data_provider.rb +0 -406
  805. data/lib/puppet/plugins/data_providers/registry.rb +0 -51
  806. data/lib/puppet/plugins/data_providers.rb +0 -45
  807. data/lib/puppet/pops/binder/binder.rb +0 -398
  808. data/lib/puppet/pops/binder/binder_issues.rb +0 -124
  809. data/lib/puppet/pops/binder/bindings_checker.rb +0 -201
  810. data/lib/puppet/pops/binder/bindings_composer.rb +0 -181
  811. data/lib/puppet/pops/binder/bindings_factory.rb +0 -813
  812. data/lib/puppet/pops/binder/bindings_label_provider.rb +0 -45
  813. data/lib/puppet/pops/binder/bindings_loader.rb +0 -87
  814. data/lib/puppet/pops/binder/bindings_model.rb +0 -70
  815. data/lib/puppet/pops/binder/bindings_model_dumper.rb +0 -215
  816. data/lib/puppet/pops/binder/bindings_model_meta.rb +0 -215
  817. data/lib/puppet/pops/binder/bindings_validator_factory.rb +0 -28
  818. data/lib/puppet/pops/binder/config/binder_config.rb +0 -107
  819. data/lib/puppet/pops/binder/config/binder_config_checker.rb +0 -142
  820. data/lib/puppet/pops/binder/config/diagnostic_producer.rb +0 -36
  821. data/lib/puppet/pops/binder/config/issues.rb +0 -90
  822. data/lib/puppet/pops/binder/injector.rb +0 -771
  823. data/lib/puppet/pops/binder/injector_entry.rb +0 -57
  824. data/lib/puppet/pops/binder/key_factory.rb +0 -65
  825. data/lib/puppet/pops/binder/producers.rb +0 -831
  826. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +0 -34
  827. data/lib/puppet/pops/binder/scheme_handler/module_scheme.rb +0 -143
  828. data/lib/puppet/pops/binder/scheme_handler/symbolic_scheme.rb +0 -53
  829. data/lib/puppet/pops/binder/system_bindings.rb +0 -60
  830. data/lib/puppet/pops/containment.rb +0 -104
  831. data/lib/puppet/pops/model/model.rb +0 -131
  832. data/lib/puppet/pops/model/model_meta.rb +0 -629
  833. data/lib/puppet/pops/serialization/rgen.rb +0 -152
  834. data/lib/puppet/vendor/load_rgen.rb +0 -2
  835. data/lib/puppet/vendor/rgen/CHANGELOG +0 -197
  836. data/lib/puppet/vendor/rgen/MIT-LICENSE +0 -20
  837. data/lib/puppet/vendor/rgen/PUPPET_README.md +0 -6
  838. data/lib/puppet/vendor/rgen/README.rdoc +0 -78
  839. data/lib/puppet/vendor/rgen/Rakefile +0 -41
  840. data/lib/puppet/vendor/rgen/TODO +0 -41
  841. data/lib/puppet/vendor/rgen/anounce.txt +0 -61
  842. data/lib/puppet/vendor/rgen/design_rationale.txt +0 -71
  843. data/lib/puppet/vendor/rgen/lib/ea_support/ea_support.rb +0 -54
  844. data/lib/puppet/vendor/rgen/lib/ea_support/id_store.rb +0 -32
  845. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel.rb +0 -562
  846. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_ext.rb +0 -45
  847. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_metamodel_generator.rb +0 -43
  848. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_ea_to_uml13.rb +0 -103
  849. data/lib/puppet/vendor/rgen/lib/ea_support/uml13_to_uml13_ea.rb +0 -89
  850. data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel.rb +0 -559
  851. data/lib/puppet/vendor/rgen/lib/metamodels/uml13_metamodel_ext.rb +0 -26
  852. data/lib/puppet/vendor/rgen/lib/mmgen/metamodel_generator.rb +0 -20
  853. data/lib/puppet/vendor/rgen/lib/mmgen/mm_ext/ecore_mmgen_ext.rb +0 -91
  854. data/lib/puppet/vendor/rgen/lib/mmgen/mmgen.rb +0 -28
  855. data/lib/puppet/vendor/rgen/lib/mmgen/templates/annotations.tpl +0 -37
  856. data/lib/puppet/vendor/rgen/lib/mmgen/templates/metamodel_generator.tpl +0 -172
  857. data/lib/puppet/vendor/rgen/lib/rgen/array_extensions.rb +0 -45
  858. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore.rb +0 -218
  859. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_builder_methods.rb +0 -81
  860. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_ext.rb +0 -69
  861. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_interface.rb +0 -47
  862. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ecore_to_ruby.rb +0 -167
  863. data/lib/puppet/vendor/rgen/lib/rgen/ecore/ruby_to_ecore.rb +0 -91
  864. data/lib/puppet/vendor/rgen/lib/rgen/environment.rb +0 -129
  865. data/lib/puppet/vendor/rgen/lib/rgen/fragment/dump_file_cache.rb +0 -63
  866. data/lib/puppet/vendor/rgen/lib/rgen/fragment/fragmented_model.rb +0 -140
  867. data/lib/puppet/vendor/rgen/lib/rgen/fragment/model_fragment.rb +0 -289
  868. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_instantiator.rb +0 -66
  869. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/abstract_xml_instantiator.rb +0 -66
  870. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/default_xml_instantiator.rb +0 -117
  871. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/ecore_xml_instantiator.rb +0 -169
  872. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_instantiator.rb +0 -126
  873. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.rb +0 -331
  874. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/json_parser.y +0 -94
  875. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/nodebased_xml_instantiator.rb +0 -137
  876. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/qualified_name_resolver.rb +0 -97
  877. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/reference_resolver.rb +0 -128
  878. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/resolution_helper.rb +0 -47
  879. data/lib/puppet/vendor/rgen/lib/rgen/instantiator/xmi11_instantiator.rb +0 -168
  880. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_extensions.rb +0 -556
  881. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/builder_runtime.rb +0 -174
  882. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/constant_order_helper.rb +0 -89
  883. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/data_types.rb +0 -77
  884. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/annotation.rb +0 -30
  885. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/intermediate/feature.rb +0 -168
  886. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/mm_multiple.rb +0 -23
  887. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder/module_extension.rb +0 -42
  888. data/lib/puppet/vendor/rgen/lib/rgen/metamodel_builder.rb +0 -224
  889. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/builder_context.rb +0 -334
  890. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/model_serializer.rb +0 -225
  891. data/lib/puppet/vendor/rgen/lib/rgen/model_builder/reference_resolver.rb +0 -156
  892. data/lib/puppet/vendor/rgen/lib/rgen/model_builder.rb +0 -32
  893. data/lib/puppet/vendor/rgen/lib/rgen/serializer/json_serializer.rb +0 -121
  894. data/lib/puppet/vendor/rgen/lib/rgen/serializer/opposite_reference_filter.rb +0 -18
  895. data/lib/puppet/vendor/rgen/lib/rgen/serializer/qualified_name_provider.rb +0 -47
  896. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi11_serializer.rb +0 -116
  897. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xmi20_serializer.rb +0 -71
  898. data/lib/puppet/vendor/rgen/lib/rgen/serializer/xml_serializer.rb +0 -98
  899. data/lib/puppet/vendor/rgen/lib/rgen/template_language/directory_template_container.rb +0 -83
  900. data/lib/puppet/vendor/rgen/lib/rgen/template_language/output_handler.rb +0 -87
  901. data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_container.rb +0 -234
  902. data/lib/puppet/vendor/rgen/lib/rgen/template_language/template_helper.rb +0 -26
  903. data/lib/puppet/vendor/rgen/lib/rgen/template_language.rb +0 -297
  904. data/lib/puppet/vendor/rgen/lib/rgen/transformer.rb +0 -475
  905. data/lib/puppet/vendor/rgen/lib/rgen/util/auto_class_creator.rb +0 -61
  906. data/lib/puppet/vendor/rgen/lib/rgen/util/cached_glob.rb +0 -67
  907. data/lib/puppet/vendor/rgen/lib/rgen/util/file_cache_map.rb +0 -124
  908. data/lib/puppet/vendor/rgen/lib/rgen/util/file_change_detector.rb +0 -84
  909. data/lib/puppet/vendor/rgen/lib/rgen/util/method_delegation.rb +0 -114
  910. data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator.rb +0 -68
  911. data/lib/puppet/vendor/rgen/lib/rgen/util/model_comparator_base.rb +0 -142
  912. data/lib/puppet/vendor/rgen/lib/rgen/util/model_dumper.rb +0 -29
  913. data/lib/puppet/vendor/rgen/lib/rgen/util/name_helper.rb +0 -42
  914. data/lib/puppet/vendor/rgen/lib/rgen/util/pattern_matcher.rb +0 -329
  915. data/lib/puppet/vendor/rgen/lib/transformers/ecore_to_uml13.rb +0 -79
  916. data/lib/puppet/vendor/rgen/lib/transformers/uml13_to_ecore.rb +0 -127
  917. data/lib/puppet/vendor/rgen/test/array_extensions_test.rb +0 -64
  918. data/lib/puppet/vendor/rgen/test/ea_instantiator_test.rb +0 -35
  919. data/lib/puppet/vendor/rgen/test/ea_serializer_test.rb +0 -23
  920. data/lib/puppet/vendor/rgen/test/ecore_self_test.rb +0 -54
  921. data/lib/puppet/vendor/rgen/test/environment_test.rb +0 -90
  922. data/lib/puppet/vendor/rgen/test/json_test.rb +0 -171
  923. data/lib/puppet/vendor/rgen/test/metamodel_builder_test.rb +0 -1482
  924. data/lib/puppet/vendor/rgen/test/metamodel_from_ecore_test.rb +0 -57
  925. data/lib/puppet/vendor/rgen/test/metamodel_order_test.rb +0 -131
  926. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/TestModel.rb +0 -70
  927. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel.ecore +0 -42
  928. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/houseMetamodel_from_ecore.rb +0 -44
  929. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test/using_builtin_types.ecore +0 -9
  930. data/lib/puppet/vendor/rgen/test/metamodel_roundtrip_test.rb +0 -98
  931. data/lib/puppet/vendor/rgen/test/method_delegation_test.rb +0 -178
  932. data/lib/puppet/vendor/rgen/test/model_builder/builder_context_test.rb +0 -59
  933. data/lib/puppet/vendor/rgen/test/model_builder/builder_test.rb +0 -242
  934. data/lib/puppet/vendor/rgen/test/model_builder/ecore_original.rb +0 -163
  935. data/lib/puppet/vendor/rgen/test/model_builder/ecore_original_regenerated.rb +0 -163
  936. data/lib/puppet/vendor/rgen/test/model_builder/reference_resolver_test.rb +0 -156
  937. data/lib/puppet/vendor/rgen/test/model_builder/serializer_test.rb +0 -94
  938. data/lib/puppet/vendor/rgen/test/model_builder/statemachine_metamodel.rb +0 -42
  939. data/lib/puppet/vendor/rgen/test/model_builder/test_model/statemachine1.rb +0 -23
  940. data/lib/puppet/vendor/rgen/test/model_builder_test.rb +0 -6
  941. data/lib/puppet/vendor/rgen/test/model_fragment_test.rb +0 -30
  942. data/lib/puppet/vendor/rgen/test/output_handler_test.rb +0 -58
  943. data/lib/puppet/vendor/rgen/test/qualified_name_provider_test.rb +0 -48
  944. data/lib/puppet/vendor/rgen/test/qualified_name_resolver_test.rb +0 -102
  945. data/lib/puppet/vendor/rgen/test/reference_resolver_test.rb +0 -117
  946. data/lib/puppet/vendor/rgen/test/rgen_test.rb +0 -26
  947. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result1.txt +0 -29
  948. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result2.txt +0 -9
  949. data/lib/puppet/vendor/rgen/test/template_language_test/expected_result3.txt +0 -4
  950. data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestDefaultIndent.out +0 -1
  951. data/lib/puppet/vendor/rgen/test/template_language_test/indentStringTestTabIndent.out +0 -1
  952. data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/a.tpl +0 -12
  953. data/lib/puppet/vendor/rgen/test/template_language_test/templates/callback_indent_test/b.tpl +0 -5
  954. data/lib/puppet/vendor/rgen/test/template_language_test/templates/code/array.tpl +0 -11
  955. data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/author.tpl +0 -7
  956. data/lib/puppet/vendor/rgen/test/template_language_test/templates/content/chapter.tpl +0 -5
  957. data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/local.tpl +0 -8
  958. data/lib/puppet/vendor/rgen/test/template_language_test/templates/define_local_test/test.tpl +0 -8
  959. data/lib/puppet/vendor/rgen/test/template_language_test/templates/evaluate_test/test.tpl +0 -7
  960. data/lib/puppet/vendor/rgen/test/template_language_test/templates/indent_string_test.tpl +0 -12
  961. data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/c/cmod.tpl +0 -1
  962. data/lib/puppet/vendor/rgen/test/template_language_test/templates/index/chapter.tpl +0 -3
  963. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_backslash_r_test.tpl +0 -5
  964. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/no_indent.tpl +0 -3
  965. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/sub1/no_indent.tpl +0 -3
  966. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test.tpl +0 -24
  967. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test2.tpl +0 -13
  968. data/lib/puppet/vendor/rgen/test/template_language_test/templates/no_indent_test/test3.tpl +0 -10
  969. data/lib/puppet/vendor/rgen/test/template_language_test/templates/null_context_test.tpl +0 -17
  970. data/lib/puppet/vendor/rgen/test/template_language_test/templates/root.tpl +0 -31
  971. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1/sub1.tpl +0 -3
  972. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/sub1.tpl +0 -9
  973. data/lib/puppet/vendor/rgen/test/template_language_test/templates/template_resolution_test/test.tpl +0 -4
  974. data/lib/puppet/vendor/rgen/test/template_language_test/testout.txt +0 -29
  975. data/lib/puppet/vendor/rgen/test/template_language_test.rb +0 -163
  976. data/lib/puppet/vendor/rgen/test/testmodel/class_model_checker.rb +0 -119
  977. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.eap +0 -0
  978. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel.xml +0 -1029
  979. data/lib/puppet/vendor/rgen/test/testmodel/ea_testmodel_partial.xml +0 -317
  980. data/lib/puppet/vendor/rgen/test/testmodel/ecore_model_checker.rb +0 -101
  981. data/lib/puppet/vendor/rgen/test/testmodel/manual_testmodel.xml +0 -22
  982. data/lib/puppet/vendor/rgen/test/testmodel/object_model_checker.rb +0 -67
  983. data/lib/puppet/vendor/rgen/test/transformer_test.rb +0 -254
  984. data/lib/puppet/vendor/rgen/test/util/file_cache_map_test.rb +0 -99
  985. data/lib/puppet/vendor/rgen/test/util/pattern_matcher_test.rb +0 -97
  986. data/lib/puppet/vendor/rgen/test/util_test.rb +0 -5
  987. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_ecore_model_checker.rb +0 -94
  988. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_ecore_instantiator.rb +0 -53
  989. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_metamodel.rb +0 -49
  990. data/lib/puppet/vendor/rgen/test/xml_instantiator_test/simple_xmi_to_ecore.rb +0 -75
  991. data/lib/puppet/vendor/rgen/test/xml_instantiator_test.rb +0 -160
  992. data/lib/puppet/vendor/rgen_patch.rb +0 -132
  993. data/lib/semver.rb +0 -146
  994. data/man/man8/extlookup2hiera.8 +0 -10
  995. data/man/man8/puppet-file.8 +0 -189
  996. data/man/man8/puppet-resource_type.8 +0 -188
  997. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
  998. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/lib/puppet/bindings/xyz/default.rb +0 -9
  999. data/spec/fixtures/unit/data_providers/environments/sample/environment.conf +0 -2
  1000. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/hiera.yaml +0 -5
  1001. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet/bindings/backend/default.rb +0 -9
  1002. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/lib/puppet_x/backend/special_data_provider_factory.rb +0 -23
  1003. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/manifests/init.pp +0 -5
  1004. data/spec/fixtures/unit/data_providers/environments/sample/modules/backend/metadata.json +0 -9
  1005. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet/bindings/dataprovider/default.rb +0 -54
  1006. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_env_data.rb +0 -33
  1007. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/lib/puppet_x/helindbe/sample_module_data.rb +0 -33
  1008. data/spec/fixtures/unit/data_providers/environments/sample/modules/dataprovider/manifests/init.pp +0 -5
  1009. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/bindings/abc/default.rb +0 -9
  1010. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/bindings/bad_data/default.rb +0 -9
  1011. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/bindings/bca/default.rb +0 -9
  1012. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet/bindings/metawcp/default.rb +0 -10
  1013. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/lib/puppet_x/thallgren/sample_module_data.rb +0 -23
  1014. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/manifests/init.pp +0 -3
  1015. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/metawcp/metadata.json +0 -9
  1016. data/spec/unit/application/inspect_spec.rb +0 -305
  1017. data/spec/unit/data_providers/custom_data_provider_spec.rb +0 -50
  1018. data/spec/unit/face/file_spec.rb +0 -14
  1019. data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -255
  1020. data/spec/unit/indirector/resource_type/parser_spec.rb +0 -259
  1021. data/spec/unit/indirector/resource_type/rest_spec.rb +0 -14
  1022. data/spec/unit/pops/binder/binder_spec.rb +0 -43
  1023. data/spec/unit/pops/binder/bindings_checker_spec.rb +0 -155
  1024. data/spec/unit/pops/binder/bindings_composer_spec.rb +0 -64
  1025. data/spec/unit/pops/binder/bindings_validator_factory_spec.rb +0 -18
  1026. data/spec/unit/pops/binder/config/binder_config_spec.rb +0 -42
  1027. data/spec/unit/pops/binder/injector_spec.rb +0 -768
  1028. data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +0 -23
  1029. data/spec/unit/pops/serialization/rgen_spec.rb +0 -88
  1030. data/spec/unit/semver_spec.rb +0 -546
  1031. /data/lib/puppet/vendor/semantic_puppet/{lib/semantic_puppet/locales → locales}/config.yaml +0 -0
@@ -1,47 +0,0 @@
1
- module RGen
2
-
3
- module ECore
4
-
5
- # Mixin to provide access to the ECore model describing a Ruby class or module
6
- # built using MetamodelBuilder.
7
- # The module should be used to +extend+ a class or module, i.e. to make its
8
- # methods class methods.
9
- #
10
- module ECoreInterface
11
-
12
- # This method will lazily build to ECore model element belonging to the calling
13
- # class or module using RubyToECore.
14
- # Alternatively, the ECore model element can be provided up front. This is used
15
- # when the Ruby metamodel classes and modules are created from ECore.
16
- #
17
- def ecore
18
- if defined?(@ecore)
19
- @ecore
20
- else
21
- unless defined?(@@transformer)
22
- require 'rgen/ecore/ruby_to_ecore'
23
- @@transformer = RubyToECore.new
24
- end
25
- @@transformer.trans(self)
26
- end
27
- end
28
-
29
- # This method can be used to clear the ecore cache after the metamodel classes
30
- # or modules have been changed; the ecore model will be recreated on next access
31
- # to the +ecore+ method
32
- # Beware, the ecore cache is global, i.e. for all metamodels.
33
- #
34
- def self.clear_ecore_cache
35
- require 'rgen/ecore/ruby_to_ecore'
36
- @@transformer = RubyToECore.new
37
- end
38
-
39
- def _set_ecore_internal(ecore) # :nodoc:
40
- @ecore = ecore
41
- end
42
-
43
- end
44
-
45
- end
46
-
47
- end
@@ -1,167 +0,0 @@
1
- require 'rgen/ecore/ecore'
2
-
3
- module RGen
4
-
5
- module ECore
6
-
7
- class ECoreToRuby
8
-
9
- def initialize
10
- @modules = {}
11
- @classifiers = {}
12
- @features_added = {}
13
- @in_create_module = false
14
- end
15
-
16
- def create_module(epackage)
17
- return @modules[epackage] if @modules[epackage]
18
-
19
- top = (@in_create_module == false)
20
- @in_create_module = true
21
-
22
- m = Module.new do
23
- extend RGen::MetamodelBuilder::ModuleExtension
24
- end
25
- @modules[epackage] = m
26
-
27
- epackage.eSubpackages.each{|p| create_module(p)}
28
- m._set_ecore_internal(epackage)
29
-
30
- create_module(epackage.eSuperPackage).const_set(epackage.name, m) if epackage.eSuperPackage
31
-
32
- # create classes only after all modules have been created
33
- # otherwise classes may be created multiple times
34
- if top
35
- epackage.eAllClassifiers.each do |c|
36
- if c.is_a?(RGen::ECore::EClass)
37
- create_class(c)
38
- elsif c.is_a?(RGen::ECore::EEnum)
39
- create_enum(c)
40
- end
41
- end
42
- @in_create_module = false
43
- end
44
- m
45
- end
46
-
47
- def create_class(eclass)
48
- return @classifiers[eclass] if @classifiers[eclass]
49
-
50
- c = Class.new(super_class(eclass)) do
51
- abstract if eclass.abstract
52
- class << self
53
- attr_accessor :_ecore_to_ruby
54
- end
55
- end
56
- class << eclass
57
- attr_accessor :instanceClass
58
- def instanceClassName
59
- instanceClass.to_s
60
- end
61
- end
62
- eclass.instanceClass = c
63
- c::ClassModule.module_eval do
64
- alias _method_missing method_missing
65
- def method_missing(m, *args)
66
- if self.class._ecore_to_ruby.add_features(self.class.ecore)
67
- send(m, *args)
68
- else
69
- _method_missing(m, *args)
70
- end
71
- end
72
- alias _respond_to respond_to?
73
- def respond_to?(m, include_all=false)
74
- self.class._ecore_to_ruby.add_features(self.class.ecore)
75
- _respond_to(m)
76
- end
77
- end
78
- @classifiers[eclass] = c
79
- c._set_ecore_internal(eclass)
80
- c._ecore_to_ruby = self
81
-
82
- create_module(eclass.ePackage).const_set(eclass.name, c)
83
- c
84
- end
85
-
86
- def create_enum(eenum)
87
- return @classifiers[eenum] if @classifiers[eenum]
88
-
89
- e = RGen::MetamodelBuilder::DataTypes::Enum.new(eenum.eLiterals.collect{|l| l.name.to_sym})
90
- @classifiers[eenum] = e
91
-
92
- create_module(eenum.ePackage).const_set(eenum.name, e)
93
- e
94
- end
95
-
96
- class FeatureWrapper
97
- def initialize(efeature, classifiers)
98
- @efeature = efeature
99
- @classifiers = classifiers
100
- end
101
- def value(prop)
102
- return false if prop == :containment && @efeature.is_a?(RGen::ECore::EAttribute)
103
- @efeature.send(prop)
104
- end
105
- def many?
106
- @efeature.many
107
- end
108
- def reference?
109
- @efeature.is_a?(RGen::ECore::EReference)
110
- end
111
- def opposite
112
- @efeature.eOpposite
113
- end
114
- def impl_type
115
- etype = @efeature.eType
116
- if etype.is_a?(RGen::ECore::EClass) || etype.is_a?(RGen::ECore::EEnum)
117
- @classifiers[etype]
118
- else
119
- ic = etype.instanceClass
120
- if ic
121
- ic
122
- else
123
- raise "unknown type: #{etype.name}"
124
- end
125
- end
126
- end
127
- end
128
-
129
- def add_features(eclass)
130
- return false if @features_added[eclass]
131
- c = @classifiers[eclass]
132
- eclass.eStructuralFeatures.each do |f|
133
- w1 = FeatureWrapper.new(f, @classifiers)
134
- w2 = FeatureWrapper.new(f.eOpposite, @classifiers) if f.is_a?(RGen::ECore::EReference) && f.eOpposite
135
- c.module_eval do
136
- if w1.many?
137
- _build_many_methods(w1, w2)
138
- else
139
- _build_one_methods(w1, w2)
140
- end
141
- end
142
- end
143
- @features_added[eclass] = true
144
- eclass.eSuperTypes.each do |t|
145
- add_features(t)
146
- end
147
- true
148
- end
149
-
150
- def super_class(eclass)
151
- super_types = eclass.eSuperTypes
152
- case super_types.size
153
- when 0
154
- RGen::MetamodelBuilder::MMBase
155
- when 1
156
- create_class(super_types.first)
157
- else
158
- RGen::MetamodelBuilder::MMMultiple(*super_types.collect{|t| create_class(t)})
159
- end
160
- end
161
-
162
- end
163
-
164
- end
165
-
166
- end
167
-
@@ -1,91 +0,0 @@
1
- require 'rgen/transformer'
2
- require 'rgen/ecore/ecore'
3
-
4
- module RGen
5
-
6
- module ECore
7
-
8
- # This transformer creates an ECore model from Ruby classes built
9
- # by RGen::MetamodelBuilder.
10
- #
11
- class RubyToECore < Transformer
12
-
13
- transform Class, :to => EClass, :if => :convert? do
14
- { :name => name.gsub(/.*::(\w+)$/,'\1'),
15
- :abstract => _abstract_class,
16
- :interface => false,
17
- :eStructuralFeatures => trans(_metamodel_description),
18
- :ePackage => trans(name =~ /(.*)::\w+$/ ? eval($1) : nil),
19
- :eSuperTypes => trans(superclasses),
20
- :instanceClassName => name,
21
- :eAnnotations => trans(_annotations)
22
- }
23
- end
24
-
25
- method :superclasses do
26
- if superclass.respond_to?(:multiple_superclasses) && superclass.multiple_superclasses
27
- superclass.multiple_superclasses
28
- else
29
- [ superclass ]
30
- end
31
- end
32
-
33
- transform Module, :to => EPackage, :if => :convert? do
34
- @enumParentModule ||= {}
35
- _constants = _constantOrder + (constants - _constantOrder)
36
- _constants.select {|c| const_get(c).is_a?(MetamodelBuilder::DataTypes::Enum)}.
37
- each {|c| @enumParentModule[const_get(c)] = @current_object}
38
- { :name => name.gsub(/.*::(\w+)$/,'\1'),
39
- :eClassifiers => trans(_constants.collect{|c| const_get(c)}.select{|c| c.is_a?(Class) ||
40
- (c.is_a?(MetamodelBuilder::DataTypes::Enum) && c != MetamodelBuilder::DataTypes::Boolean) }),
41
- :eSuperPackage => trans(name =~ /(.*)::\w+$/ ? eval($1) : nil),
42
- :eSubpackages => trans(_constants.collect{|c| const_get(c)}.select{|c| c.is_a?(Module) && !c.is_a?(Class)}),
43
- :eAnnotations => trans(_annotations)
44
- }
45
- end
46
-
47
- method :convert? do
48
- @current_object.respond_to?(:ecore) && @current_object != RGen::MetamodelBuilder::MMBase
49
- end
50
-
51
- transform MetamodelBuilder::Intermediate::Attribute, :to => EAttribute do
52
- Hash[*MetamodelBuilder::Intermediate::Attribute.properties.collect{|p| [p, value(p)]}.flatten].merge({
53
- :eType => (etype == :EEnumerable ? trans(impl_type) : RGen::ECore.const_get(etype)),
54
- :eAnnotations => trans(annotations)
55
- })
56
- end
57
-
58
- transform MetamodelBuilder::Intermediate::Reference, :to => EReference do
59
- Hash[*MetamodelBuilder::Intermediate::Reference.properties.collect{|p| [p, value(p)]}.flatten].merge({
60
- :eType => trans(impl_type),
61
- :eOpposite => trans(opposite),
62
- :eAnnotations => trans(annotations)
63
- })
64
- end
65
-
66
- transform MetamodelBuilder::Intermediate::Annotation, :to => EAnnotation do
67
- { :source => source,
68
- :details => details.keys.collect do |k|
69
- e = RGen::ECore::EStringToStringMapEntry.new
70
- e.key = k
71
- e.value = details[k]
72
- e
73
- end
74
- }
75
- end
76
-
77
- transform MetamodelBuilder::DataTypes::Enum, :to => EEnum do
78
- { :name => name,
79
- :instanceClassName => @enumParentModule && @enumParentModule[@current_object] && @enumParentModule[@current_object].name+"::"+name,
80
- :eLiterals => literals.collect do |l|
81
- lit = RGen::ECore::EEnumLiteral.new
82
- lit.name = l.to_s
83
- lit
84
- end }
85
- end
86
-
87
- end
88
-
89
- end
90
-
91
- end
@@ -1,129 +0,0 @@
1
- module RGen
2
-
3
- # An Environment is used to hold model elements.
4
- #
5
- class Environment
6
-
7
- def initialize
8
- @elements = {}
9
- @subClasses = {}
10
- @subClassesUpdated = {}
11
- @deleted = {}
12
- @deletedClasses = {}
13
- end
14
-
15
- # Add a model element. Returns the environment so <code><<</code> can be chained.
16
- #
17
- def <<(el)
18
- clazz = el.class
19
- @elements[clazz] ||= []
20
- @elements[clazz] << el
21
- updateSubClasses(clazz)
22
- self
23
- end
24
-
25
- # Removes model element from environment.
26
- def delete(el)
27
- @deleted[el] = true
28
- @deletedClasses[el.class] = true
29
- end
30
-
31
- # Iterates each element
32
- #
33
- def each(&b)
34
- removeDeleted
35
- @elements.values.flatten.each(&b)
36
- end
37
-
38
- # Return the elements of the environment as an array
39
- #
40
- def elements
41
- removeDeleted
42
- @elements.values.flatten
43
- end
44
-
45
- # This method can be used to instantiate a class and automatically put it into
46
- # the environment. The new instance is returned.
47
- #
48
- def new(clazz, *args)
49
- obj = clazz.new(*args)
50
- self << obj
51
- obj
52
- end
53
-
54
- # Finds and returns model elements in the environment.
55
- #
56
- # The search description argument must be a hash specifying attribute/value pairs.
57
- # Only model elements are returned which respond to the specified attribute methods
58
- # and return the specified values as result of these attribute methods.
59
- #
60
- # As a special hash key :class can be used to look for model elements of a specific
61
- # class. In this case an array of possible classes can optionally be given.
62
- #
63
- def find(desc)
64
- removeDeleted
65
- result = []
66
- classes = desc[:class] if desc[:class] and desc[:class].is_a?(Array)
67
- classes = [ desc[:class] ] if !classes and desc[:class]
68
- if classes
69
- hashKeys = classesWithSubClasses(classes)
70
- else
71
- hashKeys = @elements.keys
72
- end
73
- hashKeys.each do |clazz|
74
- next unless @elements[clazz]
75
- @elements[clazz].each do |e|
76
- failed = false
77
- desc.each_pair { |k,v|
78
- failed = true if k != :class and ( !e.respond_to?(k) or e.send(k) != v )
79
- }
80
- result << e unless failed
81
- end
82
- end
83
- result
84
- end
85
-
86
- private
87
-
88
- def removeDeleted
89
- @deletedClasses.keys.each do |c|
90
- @elements[c].reject!{|e| @deleted[e]}
91
- end
92
- @deletedClasses.clear
93
- @deleted.clear
94
- end
95
-
96
- def updateSubClasses(clazz)
97
- return if @subClassesUpdated[clazz]
98
- if clazz.respond_to?( :ecore )
99
- superClasses = clazz.ecore.eAllSuperTypes.collect{|c| c.instanceClass}
100
- else
101
- superClasses = superclasses(clazz)
102
- end
103
- superClasses.each do |c|
104
- next if c == Object
105
- @subClasses[c] ||= []
106
- @subClasses[c] << clazz
107
- end
108
- @subClassesUpdated[clazz] = true
109
- end
110
-
111
- def classesWithSubClasses(classes)
112
- result = classes
113
- classes.each do |c|
114
- result += @subClasses[c] if @subClasses[c]
115
- end
116
- result.uniq
117
- end
118
-
119
- def superclasses(clazz)
120
- if clazz == Object
121
- []
122
- else
123
- superclasses(clazz.superclass) << clazz.superclass
124
- end
125
- end
126
-
127
- end
128
-
129
- end
@@ -1,63 +0,0 @@
1
- module RGen
2
-
3
- module Fragment
4
-
5
- # Caches model fragments in Ruby dump files.
6
- #
7
- # Dump files are created per each fragment file.
8
- #
9
- # The main goal is to support fast loading and joining of fragments. Therefore the cache
10
- # stores additional information which makes the joining process faster (adding to
11
- # environment, resolving references)
12
- #
13
- class DumpFileCache
14
-
15
- # +cache_map+ must be an object responding to +load_data+ and +store_data+
16
- # for loading or storing data associated with a file;
17
- # this can be an instance of Util::FileCacheMap
18
- def initialize(cache_map)
19
- @cache_map = cache_map
20
- end
21
-
22
- # Note that the fragment must not be connected to other fragments by resolved references
23
- # unresolve the fragment if necessary
24
- def store(fragment)
25
- fref = fragment.fragment_ref
26
- # temporarily remove the reference to the fragment to avoid dumping the fragment
27
- fref.fragment = nil
28
- @cache_map.store_data(fragment.location,
29
- Marshal.dump({
30
- :root_elements => fragment.root_elements,
31
- :elements => fragment.elements,
32
- :index => fragment.index,
33
- :unresolved_refs => fragment.unresolved_refs,
34
- :fragment_ref => fref,
35
- :data => fragment.data
36
- }))
37
- fref.fragment = fragment
38
- end
39
-
40
- def load(fragment)
41
- dump = @cache_map.load_data(fragment.location)
42
- return :invalid if dump == :invalid
43
- header = Marshal.load(dump)
44
- fragment.set_root_elements(header[:root_elements],
45
- :elements => header[:elements],
46
- :index => header[:index],
47
- :unresolved_refs => header[:unresolved_refs])
48
- fragment.data = header[:data]
49
- if header[:fragment_ref]
50
- fragment.fragment_ref = header[:fragment_ref]
51
- fragment.fragment_ref.fragment = fragment
52
- else
53
- raise "no fragment_ref in fragment loaded from cache"
54
- end
55
- end
56
-
57
- end
58
-
59
- end
60
-
61
- end
62
-
63
-
@@ -1,140 +0,0 @@
1
- require 'rgen/instantiator/reference_resolver'
2
-
3
- module RGen
4
-
5
- module Fragment
6
-
7
- # A FragmentedModel represents a model which consists of fragments (ModelFragment).
8
- #
9
- # The main purpose of this class is to resolve references across fragments and
10
- # to keep the references consistent while fragments are added or removed.
11
- # This way it also plays an important role in keeping the model fragments consistent
12
- # and thus ModelFragment objects should only be accessed via this interface.
13
- # Overall unresolved references after the resolution step are also maintained.
14
- #
15
- # A FragmentedModel can also keep an RGen::Environment object up to date while fragments
16
- # are added or removed. The environment must be registered with the constructor.
17
- #
18
- # Reference resolution is based on arbitrary identifiers. The identifiers must be
19
- # provided in the fragments' indices. The FragmentedModel takes care to maintain
20
- # the overall index.
21
- #
22
- class FragmentedModel
23
- attr_reader :fragments
24
- attr_reader :environment
25
-
26
- # Creates a fragmented model. Options:
27
- #
28
- # :env
29
- # environment which will be updated as model elements are added and removed
30
- #
31
- def initialize(options={})
32
- @environment = options[:env]
33
- @fragments = []
34
- @index = nil
35
- @fragment_change_listeners = []
36
- @fragment_index = {}
37
- end
38
-
39
- # Adds a proc which is called when a fragment is added or removed
40
- # The proc receives the fragment and one of :added, :removed
41
- #
42
- def add_fragment_change_listener(listener)
43
- @fragment_change_listeners << listener
44
- end
45
-
46
- def remove_fragment_change_listener(listener)
47
- @fragment_change_listeners.delete(listener)
48
- end
49
-
50
- # Add a fragment.
51
- #
52
- def add_fragment(fragment)
53
- invalidate_cache
54
- @fragments << fragment
55
- fragment.elements.each{|e| @environment << e} if @environment
56
- @fragment_change_listeners.each{|l| l.call(fragment, :added)}
57
- end
58
-
59
- # Removes the fragment. The fragment will be unresolved using unresolve_fragment.
60
- #
61
- def remove_fragment(fragment)
62
- raise "fragment not part of model" unless @fragments.include?(fragment)
63
- invalidate_cache
64
- @fragments.delete(fragment)
65
- @fragment_index.delete(fragment)
66
- unresolve_fragment(fragment)
67
- fragment.elements.each{|e| @environment.delete(e)} if @environment
68
- @fragment_change_listeners.each{|l| l.call(fragment, :removed)}
69
- end
70
-
71
- # Resolve references between fragments.
72
- # It is assumed that references within fragments have already been resolved.
73
- # This method can be called several times. It will update the overall unresolved references.
74
- #
75
- # Options:
76
- #
77
- # :fragment_provider:
78
- # Only if a +fragment_provider+ is given, the resolve step can be reverted later on
79
- # by a call to unresolve_fragment. The fragment provider is a proc which receives a model
80
- # element and must return the fragment in which the element is contained.
81
- #
82
- # :use_target_type:
83
- # reference resolver uses the expected target type to narrow the set of possible targets
84
- #
85
- def resolve(options={})
86
- local_index = index
87
- @fragments.each do |f|
88
- f.resolve_external(local_index, options)
89
- end
90
- end
91
-
92
- # Remove all references between this fragment and all other fragments.
93
- # The references will be replaced with unresolved references (MMProxy objects).
94
- #
95
- def unresolve_fragment(fragment)
96
- fragment.unresolve_external
97
- @fragments.each do |f|
98
- if f != fragment
99
- f.unresolve_external_fragment(fragment)
100
- end
101
- end
102
- end
103
-
104
- # Returns the overall unresolved references.
105
- #
106
- def unresolved_refs
107
- @fragments.collect{|f| f.unresolved_refs}.flatten
108
- end
109
-
110
- # Returns the overall index.
111
- # This is a Hash mapping identifiers to model elements accessible via the identifier.
112
- #
113
- def index
114
- fragments.each do |f|
115
- if !@fragment_index[f] || (@fragment_index[f].object_id != f.index.object_id)
116
- @fragment_index[f] = f.index
117
- invalidate_cache
118
- end
119
- end
120
- return @index if @index
121
- @index = {}
122
- fragments.each do |f|
123
- f.index.each do |i|
124
- (@index[i[0]] ||= []) << i[1]
125
- end
126
- end
127
- @index
128
- end
129
-
130
- private
131
-
132
- def invalidate_cache
133
- @index = nil
134
- end
135
-
136
- end
137
-
138
- end
139
-
140
- end