microwave 11.400.3 → 11.400.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (551) hide show
  1. data/distro/README +2 -0
  2. data/distro/arch/etc/conf.d/chef-client.conf +5 -0
  3. data/distro/arch/etc/conf.d/chef-expander.conf +8 -0
  4. data/distro/arch/etc/conf.d/chef-server-webui.conf +10 -0
  5. data/distro/arch/etc/conf.d/chef-server.conf +10 -0
  6. data/distro/arch/etc/conf.d/chef-solr.conf +8 -0
  7. data/distro/arch/etc/rc.d/chef-client +90 -0
  8. data/distro/arch/etc/rc.d/chef-expander +78 -0
  9. data/distro/arch/etc/rc.d/chef-server +78 -0
  10. data/distro/arch/etc/rc.d/chef-server-webui +78 -0
  11. data/distro/arch/etc/rc.d/chef-solr +78 -0
  12. data/distro/common/html/chef-client.8.html +145 -0
  13. data/distro/common/html/chef-expander.8.html +164 -0
  14. data/distro/common/html/chef-expanderctl.8.html +146 -0
  15. data/distro/common/html/chef-server-webui.8.html +185 -0
  16. data/distro/common/html/chef-server.8.html +182 -0
  17. data/distro/common/html/chef-shell.1.html +286 -0
  18. data/distro/common/html/chef-solo.8.html +191 -0
  19. data/distro/common/html/chef-solr.8.html +165 -0
  20. data/distro/common/html/knife-bootstrap.1.html +241 -0
  21. data/distro/common/html/knife-client.1.html +219 -0
  22. data/distro/common/html/knife-configure.1.html +170 -0
  23. data/distro/common/html/knife-cookbook-site.1.html +241 -0
  24. data/distro/common/html/knife-cookbook.1.html +384 -0
  25. data/distro/common/html/knife-data-bag.1.html +238 -0
  26. data/distro/common/html/knife-environment.1.html +267 -0
  27. data/distro/common/html/knife-exec.1.html +134 -0
  28. data/distro/common/html/knife-index.1.html +125 -0
  29. data/distro/common/html/knife-node.1.html +250 -0
  30. data/distro/common/html/knife-role.1.html +200 -0
  31. data/distro/common/html/knife-search.1.html +288 -0
  32. data/distro/common/html/knife-ssh.1.html +156 -0
  33. data/distro/common/html/knife-status.1.html +128 -0
  34. data/distro/common/html/knife-tag.1.html +137 -0
  35. data/distro/common/html/knife.1.html +315 -0
  36. data/distro/common/man/man1/chef-shell.1 +220 -0
  37. data/distro/common/man/man1/knife-bootstrap.1 +201 -0
  38. data/distro/common/man/man1/knife-client.1 +99 -0
  39. data/distro/common/man/man1/knife-configure.1 +88 -0
  40. data/distro/common/man/man1/knife-cookbook-site.1 +145 -0
  41. data/distro/common/man/man1/knife-cookbook.1 +345 -0
  42. data/distro/common/man/man1/knife-data-bag.1 +136 -0
  43. data/distro/common/man/man1/knife-environment.1 +178 -0
  44. data/distro/common/man/man1/knife-exec.1 +43 -0
  45. data/distro/common/man/man1/knife-index.1 +29 -0
  46. data/distro/common/man/man1/knife-node.1 +134 -0
  47. data/distro/common/man/man1/knife-role.1 +88 -0
  48. data/distro/common/man/man1/knife-search.1 +280 -0
  49. data/distro/common/man/man1/knife-ssh.1 +79 -0
  50. data/distro/common/man/man1/knife-status.1 +29 -0
  51. data/distro/common/man/man1/knife-tag.1 +43 -0
  52. data/distro/common/man/man1/knife.1 +285 -0
  53. data/distro/common/man/man8/chef-client.8 +104 -0
  54. data/distro/common/man/man8/chef-expander.8 +97 -0
  55. data/distro/common/man/man8/chef-expanderctl.8 +62 -0
  56. data/distro/common/man/man8/chef-server-webui.8 +155 -0
  57. data/distro/common/man/man8/chef-server.8 +147 -0
  58. data/distro/common/man/man8/chef-solo.8 +158 -0
  59. data/distro/common/man/man8/chef-solr.8 +122 -0
  60. data/distro/common/markdown/README +3 -0
  61. data/distro/common/markdown/man1/chef-shell.mkd +195 -0
  62. data/distro/common/markdown/man1/knife-bootstrap.mkd +141 -0
  63. data/distro/common/markdown/man1/knife-client.mkd +103 -0
  64. data/distro/common/markdown/man1/knife-configure.mkd +70 -0
  65. data/distro/common/markdown/man1/knife-cookbook-site.mkd +123 -0
  66. data/distro/common/markdown/man1/knife-cookbook.mkd +263 -0
  67. data/distro/common/markdown/man1/knife-data-bag.mkd +121 -0
  68. data/distro/common/markdown/man1/knife-environment.mkd +151 -0
  69. data/distro/common/markdown/man1/knife-exec.mkd +42 -0
  70. data/distro/common/markdown/man1/knife-index.mkd +30 -0
  71. data/distro/common/markdown/man1/knife-node.mkd +130 -0
  72. data/distro/common/markdown/man1/knife-role.mkd +85 -0
  73. data/distro/common/markdown/man1/knife-search.mkd +180 -0
  74. data/distro/common/markdown/man1/knife-ssh.mkd +69 -0
  75. data/distro/common/markdown/man1/knife-status.mkd +36 -0
  76. data/distro/common/markdown/man1/knife-tag.mkd +39 -0
  77. data/distro/common/markdown/man1/knife.mkd +213 -0
  78. data/distro/common/markdown/man8/chef-client.mkd +74 -0
  79. data/distro/common/markdown/man8/chef-expander.mkd +82 -0
  80. data/distro/common/markdown/man8/chef-expanderctl.mkd +58 -0
  81. data/distro/common/markdown/man8/chef-server-webui.mkd +121 -0
  82. data/distro/common/markdown/man8/chef-server.mkd +121 -0
  83. data/distro/common/markdown/man8/chef-solo.mkd +107 -0
  84. data/distro/common/markdown/man8/chef-solr.mkd +89 -0
  85. data/distro/debian/etc/default/chef-client +4 -0
  86. data/distro/debian/etc/default/chef-expander +8 -0
  87. data/distro/debian/etc/default/chef-server +9 -0
  88. data/distro/debian/etc/default/chef-server-webui +9 -0
  89. data/distro/debian/etc/default/chef-solr +8 -0
  90. data/distro/debian/etc/init.d/chef-client +210 -0
  91. data/distro/debian/etc/init.d/chef-expander +176 -0
  92. data/distro/debian/etc/init.d/chef-server +122 -0
  93. data/distro/debian/etc/init.d/chef-server-webui +123 -0
  94. data/distro/debian/etc/init.d/chef-solr +176 -0
  95. data/distro/debian/etc/init/chef-client.conf +17 -0
  96. data/distro/debian/etc/init/chef-expander.conf +17 -0
  97. data/distro/debian/etc/init/chef-server-webui.conf +17 -0
  98. data/distro/debian/etc/init/chef-server.conf +17 -0
  99. data/distro/debian/etc/init/chef-solr.conf +17 -0
  100. data/distro/redhat/etc/init.d/chef-client +121 -0
  101. data/distro/redhat/etc/init.d/chef-expander +104 -0
  102. data/distro/redhat/etc/init.d/chef-server +112 -0
  103. data/distro/redhat/etc/init.d/chef-server-webui +112 -0
  104. data/distro/redhat/etc/init.d/chef-solr +104 -0
  105. data/distro/redhat/etc/logrotate.d/chef-client +8 -0
  106. data/distro/redhat/etc/logrotate.d/chef-expander +8 -0
  107. data/distro/redhat/etc/logrotate.d/chef-server +8 -0
  108. data/distro/redhat/etc/logrotate.d/chef-server-webui +8 -0
  109. data/distro/redhat/etc/logrotate.d/chef-solr +8 -0
  110. data/distro/redhat/etc/sysconfig/chef-client +15 -0
  111. data/distro/redhat/etc/sysconfig/chef-expander +7 -0
  112. data/distro/redhat/etc/sysconfig/chef-server +14 -0
  113. data/distro/redhat/etc/sysconfig/chef-server-webui +14 -0
  114. data/distro/redhat/etc/sysconfig/chef-solr +8 -0
  115. data/distro/windows/service_manager.rb +164 -0
  116. data/lib/chef/api_client.rb +205 -0
  117. data/lib/chef/api_client/registration.rb +126 -0
  118. data/lib/chef/application.rb +225 -0
  119. data/lib/chef/application/agent.rb +18 -0
  120. data/lib/chef/application/apply.rb +160 -0
  121. data/lib/chef/application/client.rb +340 -0
  122. data/lib/chef/application/knife.rb +183 -0
  123. data/lib/chef/application/solo.rb +263 -0
  124. data/lib/chef/application/windows_service.rb +230 -0
  125. data/lib/chef/applications.rb +5 -0
  126. data/lib/chef/checksum/storage.rb +18 -0
  127. data/lib/chef/checksum/storage/filesystem.rb +56 -0
  128. data/lib/chef/chef_fs.rb +11 -0
  129. data/lib/chef/chef_fs/command_line.rb +232 -0
  130. data/lib/chef/chef_fs/file_pattern.rb +312 -0
  131. data/lib/chef/chef_fs/file_system.rb +358 -0
  132. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -0
  133. data/lib/chef/chef_fs/file_system/base_fs_object.rb +121 -0
  134. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +109 -0
  135. data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +31 -0
  136. data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +84 -0
  137. data/lib/chef/chef_fs/file_system/cookbook_dir.rb +188 -0
  138. data/lib/chef/chef_fs/file_system/cookbook_file.rb +78 -0
  139. data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +54 -0
  140. data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +68 -0
  141. data/lib/chef/chef_fs/file_system/data_bag_dir.rb +78 -0
  142. data/lib/chef/chef_fs/file_system/data_bag_item.rb +59 -0
  143. data/lib/chef/chef_fs/file_system/data_bags_dir.rb +66 -0
  144. data/lib/chef/chef_fs/file_system/file_system_entry.rb +90 -0
  145. data/lib/chef/chef_fs/file_system/file_system_error.rb +31 -0
  146. data/lib/chef/chef_fs/file_system/file_system_root_dir.rb +31 -0
  147. data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +31 -0
  148. data/lib/chef/chef_fs/file_system/nodes_dir.rb +47 -0
  149. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +40 -0
  150. data/lib/chef/chef_fs/file_system/not_found_error.rb +31 -0
  151. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +84 -0
  152. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +123 -0
  153. data/lib/chef/chef_fs/knife.rb +77 -0
  154. data/lib/chef/chef_fs/path_utils.rb +64 -0
  155. data/lib/chef/client.rb +556 -0
  156. data/lib/chef/config.rb +354 -0
  157. data/lib/chef/cookbook/chefignore.rb +66 -0
  158. data/lib/chef/cookbook/cookbook_collection.rb +45 -0
  159. data/lib/chef/cookbook/cookbook_version_loader.rb +171 -0
  160. data/lib/chef/cookbook/file_system_file_vendor.rb +56 -0
  161. data/lib/chef/cookbook/file_vendor.rb +48 -0
  162. data/lib/chef/cookbook/metadata.rb +627 -0
  163. data/lib/chef/cookbook/remote_file_vendor.rb +84 -0
  164. data/lib/chef/cookbook/synchronizer.rb +216 -0
  165. data/lib/chef/cookbook/syntax_check.rb +183 -0
  166. data/lib/chef/cookbook_loader.rb +134 -0
  167. data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
  168. data/lib/chef/cookbook_uploader.rb +164 -0
  169. data/lib/chef/cookbook_version.rb +782 -0
  170. data/lib/chef/daemon.rb +172 -0
  171. data/lib/chef/data_bag.rb +145 -0
  172. data/lib/chef/data_bag_item.rb +214 -0
  173. data/lib/chef/digester.rb +73 -0
  174. data/lib/chef/dsl.rb +6 -0
  175. data/lib/chef/dsl/data_query.rb +71 -0
  176. data/lib/chef/dsl/include_attribute.rb +63 -0
  177. data/lib/chef/dsl/include_recipe.rb +45 -0
  178. data/lib/chef/dsl/platform_introspection.rb +218 -0
  179. data/lib/chef/dsl/recipe.rb +87 -0
  180. data/lib/chef/dsl/registry_helper.rb +59 -0
  181. data/lib/chef/encrypted_data_bag_item.rb +323 -0
  182. data/lib/chef/environment.rb +287 -0
  183. data/lib/chef/event_dispatch/base.rb +311 -0
  184. data/lib/chef/event_dispatch/dispatcher.rb +42 -0
  185. data/lib/chef/exceptions.rb +275 -0
  186. data/lib/chef/file_access_control.rb +75 -0
  187. data/lib/chef/file_access_control/unix.rb +216 -0
  188. data/lib/chef/file_access_control/windows.rb +310 -0
  189. data/lib/chef/file_cache.rb +220 -0
  190. data/lib/chef/formatters/base.rb +250 -0
  191. data/lib/chef/formatters/doc.rb +236 -0
  192. data/lib/chef/formatters/error_descriptor.rb +66 -0
  193. data/lib/chef/formatters/error_inspectors.rb +19 -0
  194. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +111 -0
  195. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +106 -0
  196. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +146 -0
  197. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +80 -0
  198. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +125 -0
  199. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +137 -0
  200. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +117 -0
  201. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +118 -0
  202. data/lib/chef/formatters/error_mapper.rb +85 -0
  203. data/lib/chef/formatters/minimal.rb +235 -0
  204. data/lib/chef/handler.rb +235 -0
  205. data/lib/chef/handler/error_report.rb +33 -0
  206. data/lib/chef/handler/json_file.rb +65 -0
  207. data/lib/chef/json_compat.rb +147 -0
  208. data/lib/chef/knife.rb +589 -0
  209. data/lib/chef/knife/bootstrap.rb +233 -0
  210. data/lib/chef/knife/bootstrap/archlinux-gems.erb +62 -0
  211. data/lib/chef/knife/bootstrap/centos5-gems.erb +62 -0
  212. data/lib/chef/knife/bootstrap/chef-full.erb +60 -0
  213. data/lib/chef/knife/bootstrap/fedora13-gems.erb +44 -0
  214. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +53 -0
  215. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +48 -0
  216. data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +46 -0
  217. data/lib/chef/knife/client_bulk_delete.rb +65 -0
  218. data/lib/chef/knife/client_create.rb +80 -0
  219. data/lib/chef/knife/client_delete.rb +46 -0
  220. data/lib/chef/knife/client_edit.rb +45 -0
  221. data/lib/chef/knife/client_list.rb +42 -0
  222. data/lib/chef/knife/client_reregister.rb +59 -0
  223. data/lib/chef/knife/client_show.rb +52 -0
  224. data/lib/chef/knife/configure.rb +170 -0
  225. data/lib/chef/knife/configure_client.rb +50 -0
  226. data/lib/chef/knife/cookbook_bulk_delete.rb +72 -0
  227. data/lib/chef/knife/cookbook_create.rb +447 -0
  228. data/lib/chef/knife/cookbook_delete.rb +151 -0
  229. data/lib/chef/knife/cookbook_download.rb +137 -0
  230. data/lib/chef/knife/cookbook_list.rb +47 -0
  231. data/lib/chef/knife/cookbook_metadata.rb +108 -0
  232. data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -0
  233. data/lib/chef/knife/cookbook_show.rb +102 -0
  234. data/lib/chef/knife/cookbook_site_download.rb +109 -0
  235. data/lib/chef/knife/cookbook_site_install.rb +164 -0
  236. data/lib/chef/knife/cookbook_site_list.rb +62 -0
  237. data/lib/chef/knife/cookbook_site_search.rb +51 -0
  238. data/lib/chef/knife/cookbook_site_share.rb +114 -0
  239. data/lib/chef/knife/cookbook_site_show.rb +60 -0
  240. data/lib/chef/knife/cookbook_site_unshare.rb +56 -0
  241. data/lib/chef/knife/cookbook_site_vendor.rb +46 -0
  242. data/lib/chef/knife/cookbook_test.rb +94 -0
  243. data/lib/chef/knife/cookbook_upload.rb +295 -0
  244. data/lib/chef/knife/core/bootstrap_context.rb +106 -0
  245. data/lib/chef/knife/core/cookbook_scm_repo.rb +160 -0
  246. data/lib/chef/knife/core/generic_presenter.rb +204 -0
  247. data/lib/chef/knife/core/node_editor.rb +130 -0
  248. data/lib/chef/knife/core/node_presenter.rb +137 -0
  249. data/lib/chef/knife/core/object_loader.rb +112 -0
  250. data/lib/chef/knife/core/subcommand_loader.rb +112 -0
  251. data/lib/chef/knife/core/text_formatter.rb +86 -0
  252. data/lib/chef/knife/core/ui.rb +219 -0
  253. data/lib/chef/knife/data_bag_create.rb +93 -0
  254. data/lib/chef/knife/data_bag_delete.rb +51 -0
  255. data/lib/chef/knife/data_bag_edit.rb +94 -0
  256. data/lib/chef/knife/data_bag_from_file.rb +136 -0
  257. data/lib/chef/knife/data_bag_list.rb +46 -0
  258. data/lib/chef/knife/data_bag_show.rb +81 -0
  259. data/lib/chef/knife/delete.rb +39 -0
  260. data/lib/chef/knife/diff.rb +46 -0
  261. data/lib/chef/knife/download.rb +50 -0
  262. data/lib/chef/knife/environment_create.rb +53 -0
  263. data/lib/chef/knife/environment_delete.rb +45 -0
  264. data/lib/chef/knife/environment_edit.rb +45 -0
  265. data/lib/chef/knife/environment_from_file.rb +83 -0
  266. data/lib/chef/knife/environment_list.rb +42 -0
  267. data/lib/chef/knife/environment_show.rb +53 -0
  268. data/lib/chef/knife/exec.rb +86 -0
  269. data/lib/chef/knife/help.rb +103 -0
  270. data/lib/chef/knife/help_topics.rb +4 -0
  271. data/lib/chef/knife/index_rebuild.rb +134 -0
  272. data/lib/chef/knife/list.rb +109 -0
  273. data/lib/chef/knife/node_bulk_delete.rb +80 -0
  274. data/lib/chef/knife/node_create.rb +50 -0
  275. data/lib/chef/knife/node_delete.rb +47 -0
  276. data/lib/chef/knife/node_edit.rb +72 -0
  277. data/lib/chef/knife/node_from_file.rb +50 -0
  278. data/lib/chef/knife/node_list.rb +46 -0
  279. data/lib/chef/knife/node_run_list_add.rb +75 -0
  280. data/lib/chef/knife/node_run_list_remove.rb +48 -0
  281. data/lib/chef/knife/node_show.rb +73 -0
  282. data/lib/chef/knife/raw.rb +108 -0
  283. data/lib/chef/knife/recipe_list.rb +32 -0
  284. data/lib/chef/knife/role_bulk_delete.rb +70 -0
  285. data/lib/chef/knife/role_create.rb +55 -0
  286. data/lib/chef/knife/role_delete.rb +47 -0
  287. data/lib/chef/knife/role_edit.rb +48 -0
  288. data/lib/chef/knife/role_from_file.rb +56 -0
  289. data/lib/chef/knife/role_list.rb +43 -0
  290. data/lib/chef/knife/role_show.rb +54 -0
  291. data/lib/chef/knife/search.rb +159 -0
  292. data/lib/chef/knife/show.rb +32 -0
  293. data/lib/chef/knife/ssh.rb +463 -0
  294. data/lib/chef/knife/status.rb +119 -0
  295. data/lib/chef/knife/tag_create.rb +52 -0
  296. data/lib/chef/knife/tag_delete.rb +60 -0
  297. data/lib/chef/knife/tag_list.rb +47 -0
  298. data/lib/chef/knife/upload.rb +50 -0
  299. data/lib/chef/knife/user_create.rb +93 -0
  300. data/lib/chef/knife/user_delete.rb +46 -0
  301. data/lib/chef/knife/user_edit.rb +53 -0
  302. data/lib/chef/knife/user_list.rb +42 -0
  303. data/lib/chef/knife/user_reregister.rb +59 -0
  304. data/lib/chef/knife/user_show.rb +52 -0
  305. data/lib/chef/log.rb +39 -0
  306. data/lib/chef/mash.rb +225 -0
  307. data/lib/chef/mixin/checksum.rb +32 -0
  308. data/lib/chef/mixin/command.rb +164 -0
  309. data/lib/chef/mixin/command/unix.rb +220 -0
  310. data/lib/chef/mixin/command/windows.rb +76 -0
  311. data/lib/chef/mixin/convert_to_class_name.rb +65 -0
  312. data/lib/chef/mixin/create_path.rb +57 -0
  313. data/lib/chef/mixin/deep_merge.rb +168 -0
  314. data/lib/chef/mixin/deprecation.rb +100 -0
  315. data/lib/chef/mixin/enforce_ownership_and_permissions.rb +39 -0
  316. data/lib/chef/mixin/file_class.rb +46 -0
  317. data/lib/chef/mixin/from_file.rb +50 -0
  318. data/lib/chef/mixin/get_source_from_package.rb +42 -0
  319. data/lib/chef/mixin/language.rb +48 -0
  320. data/lib/chef/mixin/language_include_attribute.rb +35 -0
  321. data/lib/chef/mixin/language_include_recipe.rb +32 -0
  322. data/lib/chef/mixin/params_validate.rb +225 -0
  323. data/lib/chef/mixin/path_sanity.rb +67 -0
  324. data/lib/chef/mixin/recipe_definition_dsl_core.rb +35 -0
  325. data/lib/chef/mixin/securable.rb +205 -0
  326. data/lib/chef/mixin/shell_out.rb +69 -0
  327. data/lib/chef/mixin/template.rb +140 -0
  328. data/lib/chef/mixin/why_run.rb +332 -0
  329. data/lib/chef/mixin/xml_escape.rb +140 -0
  330. data/lib/chef/mixins.rb +14 -0
  331. data/lib/chef/monkey_patches/dir.rb +36 -0
  332. data/lib/chef/monkey_patches/fileutils.rb +65 -0
  333. data/lib/chef/monkey_patches/net_http.rb +22 -0
  334. data/lib/chef/monkey_patches/numeric.rb +15 -0
  335. data/lib/chef/monkey_patches/object.rb +9 -0
  336. data/lib/chef/monkey_patches/regexp.rb +34 -0
  337. data/lib/chef/monkey_patches/string.rb +49 -0
  338. data/lib/chef/monkey_patches/tempfile.rb +64 -0
  339. data/lib/chef/nil_argument.rb +3 -0
  340. data/lib/chef/node.rb +509 -0
  341. data/lib/chef/node/attribute.rb +398 -0
  342. data/lib/chef/node/attribute_collections.rb +206 -0
  343. data/lib/chef/node/immutable_collections.rb +186 -0
  344. data/lib/chef/platform.rb +519 -0
  345. data/lib/chef/provider.rb +176 -0
  346. data/lib/chef/provider/breakpoint.rb +36 -0
  347. data/lib/chef/provider/cookbook_file.rb +113 -0
  348. data/lib/chef/provider/cron.rb +214 -0
  349. data/lib/chef/provider/cron/solaris.rb +56 -0
  350. data/lib/chef/provider/deploy.rb +475 -0
  351. data/lib/chef/provider/deploy/revision.rb +80 -0
  352. data/lib/chef/provider/deploy/timestamped.rb +32 -0
  353. data/lib/chef/provider/directory.rb +131 -0
  354. data/lib/chef/provider/env.rb +152 -0
  355. data/lib/chef/provider/env/windows.rb +75 -0
  356. data/lib/chef/provider/erl_call.rb +106 -0
  357. data/lib/chef/provider/execute.rb +68 -0
  358. data/lib/chef/provider/file.rb +328 -0
  359. data/lib/chef/provider/git.rb +260 -0
  360. data/lib/chef/provider/group.rb +158 -0
  361. data/lib/chef/provider/group/aix.rb +70 -0
  362. data/lib/chef/provider/group/dscl.rb +129 -0
  363. data/lib/chef/provider/group/gpasswd.rb +65 -0
  364. data/lib/chef/provider/group/groupadd.rb +96 -0
  365. data/lib/chef/provider/group/groupmod.rb +120 -0
  366. data/lib/chef/provider/group/pw.rb +93 -0
  367. data/lib/chef/provider/group/suse.rb +60 -0
  368. data/lib/chef/provider/group/usermod.rb +68 -0
  369. data/lib/chef/provider/group/windows.rb +79 -0
  370. data/lib/chef/provider/http_request.rb +119 -0
  371. data/lib/chef/provider/ifconfig.rb +214 -0
  372. data/lib/chef/provider/link.rb +132 -0
  373. data/lib/chef/provider/log.rb +54 -0
  374. data/lib/chef/provider/lwrp_base.rb +150 -0
  375. data/lib/chef/provider/mdadm.rb +92 -0
  376. data/lib/chef/provider/mount.rb +128 -0
  377. data/lib/chef/provider/mount/mount.rb +252 -0
  378. data/lib/chef/provider/mount/windows.rb +81 -0
  379. data/lib/chef/provider/ohai.rb +47 -0
  380. data/lib/chef/provider/package.rb +229 -0
  381. data/lib/chef/provider/package/apt.rb +147 -0
  382. data/lib/chef/provider/package/dpkg.rb +128 -0
  383. data/lib/chef/provider/package/easy_install.rb +136 -0
  384. data/lib/chef/provider/package/freebsd.rb +149 -0
  385. data/lib/chef/provider/package/ips.rb +101 -0
  386. data/lib/chef/provider/package/macports.rb +105 -0
  387. data/lib/chef/provider/package/pacman.rb +111 -0
  388. data/lib/chef/provider/package/portage.rb +138 -0
  389. data/lib/chef/provider/package/rpm.rb +121 -0
  390. data/lib/chef/provider/package/rubygems.rb +548 -0
  391. data/lib/chef/provider/package/smartos.rb +84 -0
  392. data/lib/chef/provider/package/solaris.rb +139 -0
  393. data/lib/chef/provider/package/yum-dump.py +307 -0
  394. data/lib/chef/provider/package/yum.rb +1255 -0
  395. data/lib/chef/provider/package/zypper.rb +144 -0
  396. data/lib/chef/provider/registry_key.rb +156 -0
  397. data/lib/chef/provider/remote_directory.rb +180 -0
  398. data/lib/chef/provider/remote_file.rb +141 -0
  399. data/lib/chef/provider/resource_update.rb +55 -0
  400. data/lib/chef/provider/route.rb +223 -0
  401. data/lib/chef/provider/ruby_block.rb +42 -0
  402. data/lib/chef/provider/script.rb +57 -0
  403. data/lib/chef/provider/service.rb +173 -0
  404. data/lib/chef/provider/service/arch.rb +113 -0
  405. data/lib/chef/provider/service/debian.rb +152 -0
  406. data/lib/chef/provider/service/freebsd.rb +175 -0
  407. data/lib/chef/provider/service/gentoo.rb +67 -0
  408. data/lib/chef/provider/service/init.rb +89 -0
  409. data/lib/chef/provider/service/insserv.rb +52 -0
  410. data/lib/chef/provider/service/invokercd.rb +35 -0
  411. data/lib/chef/provider/service/macosx.rb +144 -0
  412. data/lib/chef/provider/service/redhat.rb +77 -0
  413. data/lib/chef/provider/service/simple.rb +172 -0
  414. data/lib/chef/provider/service/solaris.rb +86 -0
  415. data/lib/chef/provider/service/systemd.rb +115 -0
  416. data/lib/chef/provider/service/upstart.rb +232 -0
  417. data/lib/chef/provider/service/windows.rb +163 -0
  418. data/lib/chef/provider/subversion.rb +214 -0
  419. data/lib/chef/provider/template.rb +120 -0
  420. data/lib/chef/provider/template_finder.rb +61 -0
  421. data/lib/chef/provider/user.rb +206 -0
  422. data/lib/chef/provider/user/dscl.rb +288 -0
  423. data/lib/chef/provider/user/pw.rb +113 -0
  424. data/lib/chef/provider/user/useradd.rb +144 -0
  425. data/lib/chef/provider/user/windows.rb +124 -0
  426. data/lib/chef/providers.rb +103 -0
  427. data/lib/chef/recipe.rb +135 -0
  428. data/lib/chef/reserved_names.rb +9 -0
  429. data/lib/chef/resource.rb +794 -0
  430. data/lib/chef/resource/apt_package.rb +43 -0
  431. data/lib/chef/resource/bash.rb +33 -0
  432. data/lib/chef/resource/breakpoint.rb +35 -0
  433. data/lib/chef/resource/chef_gem.rb +53 -0
  434. data/lib/chef/resource/conditional.rb +101 -0
  435. data/lib/chef/resource/cookbook_file.rb +52 -0
  436. data/lib/chef/resource/cron.rb +202 -0
  437. data/lib/chef/resource/csh.rb +33 -0
  438. data/lib/chef/resource/deploy.rb +403 -0
  439. data/lib/chef/resource/deploy_revision.rb +40 -0
  440. data/lib/chef/resource/directory.rb +65 -0
  441. data/lib/chef/resource/dpkg_package.rb +34 -0
  442. data/lib/chef/resource/easy_install_package.rb +57 -0
  443. data/lib/chef/resource/env.rb +63 -0
  444. data/lib/chef/resource/erl_call.rb +86 -0
  445. data/lib/chef/resource/execute.rb +132 -0
  446. data/lib/chef/resource/file.rb +96 -0
  447. data/lib/chef/resource/freebsd_package.rb +35 -0
  448. data/lib/chef/resource/gem_package.rb +53 -0
  449. data/lib/chef/resource/git.rb +46 -0
  450. data/lib/chef/resource/group.rb +83 -0
  451. data/lib/chef/resource/http_request.rb +65 -0
  452. data/lib/chef/resource/ifconfig.rb +149 -0
  453. data/lib/chef/resource/ips_package.rb +42 -0
  454. data/lib/chef/resource/link.rb +92 -0
  455. data/lib/chef/resource/log.rb +74 -0
  456. data/lib/chef/resource/lwrp_base.rb +127 -0
  457. data/lib/chef/resource/macports_package.rb +29 -0
  458. data/lib/chef/resource/mdadm.rb +105 -0
  459. data/lib/chef/resource/mount.rb +139 -0
  460. data/lib/chef/resource/ohai.rb +54 -0
  461. data/lib/chef/resource/package.rb +84 -0
  462. data/lib/chef/resource/pacman_package.rb +33 -0
  463. data/lib/chef/resource/perl.rb +33 -0
  464. data/lib/chef/resource/portage_package.rb +33 -0
  465. data/lib/chef/resource/python.rb +33 -0
  466. data/lib/chef/resource/registry_key.rb +86 -0
  467. data/lib/chef/resource/remote_directory.rb +126 -0
  468. data/lib/chef/resource/remote_file.rb +81 -0
  469. data/lib/chef/resource/route.rb +140 -0
  470. data/lib/chef/resource/rpm_package.rb +34 -0
  471. data/lib/chef/resource/ruby.rb +33 -0
  472. data/lib/chef/resource/ruby_block.rb +51 -0
  473. data/lib/chef/resource/scm.rb +151 -0
  474. data/lib/chef/resource/script.rb +63 -0
  475. data/lib/chef/resource/service.rb +178 -0
  476. data/lib/chef/resource/smartos_package.rb +36 -0
  477. data/lib/chef/resource/solaris_package.rb +36 -0
  478. data/lib/chef/resource/subversion.rb +37 -0
  479. data/lib/chef/resource/template.rb +76 -0
  480. data/lib/chef/resource/timestamped_deploy.rb +31 -0
  481. data/lib/chef/resource/user.rb +134 -0
  482. data/lib/chef/resource/yum_package.rb +63 -0
  483. data/lib/chef/resource_collection.rb +221 -0
  484. data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
  485. data/lib/chef/resource_definition.rb +67 -0
  486. data/lib/chef/resource_definition_list.rb +38 -0
  487. data/lib/chef/resource_platform_map.rb +151 -0
  488. data/lib/chef/resource_reporter.rb +281 -0
  489. data/lib/chef/resources.rb +69 -0
  490. data/lib/chef/rest.rb +438 -0
  491. data/lib/chef/rest/auth_credentials.rb +57 -0
  492. data/lib/chef/rest/cookie_jar.rb +31 -0
  493. data/lib/chef/rest/rest_request.rb +229 -0
  494. data/lib/chef/role.rb +253 -0
  495. data/lib/chef/run_context.rb +214 -0
  496. data/lib/chef/run_context/cookbook_compiler.rb +280 -0
  497. data/lib/chef/run_list.rb +163 -0
  498. data/lib/chef/run_list/run_list_expansion.rb +191 -0
  499. data/lib/chef/run_list/run_list_item.rb +99 -0
  500. data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
  501. data/lib/chef/run_lock.rb +90 -0
  502. data/lib/chef/run_status.rb +124 -0
  503. data/lib/chef/runner.rb +118 -0
  504. data/lib/chef/sandbox.rb +20 -0
  505. data/lib/chef/scan_access_control.rb +133 -0
  506. data/lib/chef/search/query.rb +65 -0
  507. data/lib/chef/shef/ext.rb +19 -0
  508. data/lib/chef/shell.rb +329 -0
  509. data/lib/chef/shell/ext.rb +593 -0
  510. data/lib/chef/shell/model_wrapper.rb +120 -0
  511. data/lib/chef/shell/shell_rest.rb +28 -0
  512. data/lib/chef/shell/shell_session.rb +298 -0
  513. data/lib/chef/shell_out.rb +13 -0
  514. data/lib/chef/streaming_cookbook_uploader.rb +201 -0
  515. data/lib/chef/tasks/chef_repo.rake +334 -0
  516. data/lib/chef/user.rb +182 -0
  517. data/lib/chef/util/file_edit.rb +132 -0
  518. data/lib/chef/util/windows.rb +56 -0
  519. data/lib/chef/util/windows/net_group.rb +101 -0
  520. data/lib/chef/util/windows/net_use.rb +121 -0
  521. data/lib/chef/util/windows/net_user.rb +198 -0
  522. data/lib/chef/util/windows/volume.rb +59 -0
  523. data/lib/chef/version.rb +23 -0
  524. data/lib/chef/version_class.rb +70 -0
  525. data/lib/chef/version_constraint.rb +116 -0
  526. data/lib/chef/win32/api.rb +364 -0
  527. data/lib/chef/win32/api/error.rb +921 -0
  528. data/lib/chef/win32/api/file.rb +535 -0
  529. data/lib/chef/win32/api/memory.rb +105 -0
  530. data/lib/chef/win32/api/process.rb +41 -0
  531. data/lib/chef/win32/api/psapi.rb +51 -0
  532. data/lib/chef/win32/api/security.rb +385 -0
  533. data/lib/chef/win32/api/system.rb +192 -0
  534. data/lib/chef/win32/api/unicode.rb +178 -0
  535. data/lib/chef/win32/error.rb +73 -0
  536. data/lib/chef/win32/file.rb +167 -0
  537. data/lib/chef/win32/file/info.rb +100 -0
  538. data/lib/chef/win32/handle.rb +55 -0
  539. data/lib/chef/win32/memory.rb +101 -0
  540. data/lib/chef/win32/process.rb +84 -0
  541. data/lib/chef/win32/registry.rb +382 -0
  542. data/lib/chef/win32/security.rb +508 -0
  543. data/lib/chef/win32/security/ace.rb +125 -0
  544. data/lib/chef/win32/security/acl.rb +101 -0
  545. data/lib/chef/win32/security/securable_object.rb +109 -0
  546. data/lib/chef/win32/security/security_descriptor.rb +93 -0
  547. data/lib/chef/win32/security/sid.rb +199 -0
  548. data/lib/chef/win32/security/token.rb +64 -0
  549. data/lib/chef/win32/unicode.rb +43 -0
  550. data/lib/chef/win32/version.rb +119 -0
  551. metadata +553 -3
@@ -0,0 +1,192 @@
1
+ #
2
+ # Author:: Seth Chisamore (<schisamo@opscode.com>)
3
+ # Copyright:: Copyright 2011 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/win32/api'
20
+
21
+ class Chef
22
+ module ReservedNames::Win32
23
+ module API
24
+ module System
25
+ extend Chef::ReservedNames::Win32::API
26
+
27
+ ###############################################
28
+ # Win32 API Constants
29
+ ###############################################
30
+
31
+ # http://msdn.microsoft.com/en-us/library/ms724833(v=vs.85).aspx
32
+
33
+ # Suite Masks
34
+ # Microsoft BackOffice components are installed.
35
+ VER_SUITE_BACKOFFICE = 0x00000004
36
+ # Windows Server 2003, Web Edition is installed.
37
+ VER_SUITE_BLADE = 0x00000400
38
+ # Windows Server 2003, Compute Cluster Edition is installed.
39
+ VER_SUITE_COMPUTE_SERVER = 0x00004000
40
+ # Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition, or Windows 2000 Datacenter Server is installed.
41
+ VER_SUITE_DATACENTER = 0x00000080
42
+ # Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition, or Windows 2000 Advanced Server is installed. Refer to the Remarks section for more information about this bit flag.
43
+ VER_SUITE_ENTERPRISE = 0x00000002
44
+ # Windows XP Embedded is installed.
45
+ VER_SUITE_EMBEDDEDNT = 0x00000040
46
+ # Windows Vista Home Premium, Windows Vista Home Basic, or Windows XP Home Edition is installed.
47
+ VER_SUITE_PERSONAL = 0x00000200
48
+ # Remote Desktop is supported, but only one interactive session is supported. This value is set unless the system is running in application server mode.
49
+ VER_SUITE_SINGLEUSERTS = 0x00000100
50
+ # Microsoft Small Business Server was once installed on the system, but may have been upgraded to another version of Windows. Refer to the Remarks section for more information about this bit flag.
51
+ VER_SUITE_SMALLBUSINESS = 0x00000001
52
+ # Microsoft Small Business Server is installed with the restrictive client license in force. Refer to the Remarks section for more information about this bit flag.
53
+ VER_SUITE_SMALLBUSINESS_RESTRICTED = 0x00000020
54
+ # Windows Storage Server 2003 R2 or Windows Storage Server 2003is installed.
55
+ VER_SUITE_STORAGE_SERVER = 0x00002000
56
+ # Terminal Services is installed. This value is always set.
57
+ # If VER_SUITE_TERMINAL is set but VER_SUITE_SINGLEUSERTS is not set, the system is running in application server mode.
58
+ VER_SUITE_TERMINAL = 0x00000010
59
+ # Windows Home Server is installed.
60
+ VER_SUITE_WH_SERVER = 0x00008000
61
+
62
+ # Product Type
63
+ # The system is a domain controller and the operating system is Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
64
+ VER_NT_DOMAIN_CONTROLLER = 0x0000002
65
+ # The operating system is Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
66
+ # Note that a server that is also a domain controller is reported as VER_NT_DOMAIN_CONTROLLER, not VER_NT_SERVER.
67
+ VER_NT_SERVER = 0x0000003
68
+ # The operating system is Windows 7, Windows Vista, Windows XP Professional, Windows XP Home Edition, or Windows 2000 Professional.
69
+ VER_NT_WORKSTATION = 0x0000001
70
+
71
+ # Product Info
72
+ # http://msdn.microsoft.com/en-us/library/ms724358(v=vs.85).aspx
73
+ PRODUCT_BUSINESS = 0x00000006 # Business
74
+ PRODUCT_BUSINESS_N = 0x00000010 # Business N
75
+ PRODUCT_CLUSTER_SERVER = 0x00000012 # HPC Edition
76
+ PRODUCT_DATACENTER_SERVER = 0x00000008 # Server Datacenter (full installation)
77
+ PRODUCT_DATACENTER_SERVER_CORE = 0x0000000C # Server Datacenter (core installation)
78
+ PRODUCT_DATACENTER_SERVER_CORE_V = 0x00000027 # Server Datacenter without Hyper-V (core installation)
79
+ PRODUCT_DATACENTER_SERVER_V = 0x00000025 # Server Datacenter without Hyper-V (full installation)
80
+ PRODUCT_ENTERPRISE = 0x00000004 # Enterprise
81
+ PRODUCT_ENTERPRISE_E = 0x00000046 # Not supported
82
+ PRODUCT_ENTERPRISE_N = 0x0000001B # Enterprise N
83
+ PRODUCT_ENTERPRISE_SERVER = 0x0000000A # Server Enterprise (full installation)
84
+ PRODUCT_ENTERPRISE_SERVER_CORE = 0x0000000E # Server Enterprise (core installation)
85
+ PRODUCT_ENTERPRISE_SERVER_CORE_V = 0x00000029 # Server Enterprise without Hyper-V (core installation)
86
+ PRODUCT_ENTERPRISE_SERVER_IA64 = 0x0000000F # Server Enterprise for Itanium-based Systems
87
+ PRODUCT_ENTERPRISE_SERVER_V = 0x00000026 # Server Enterprise without Hyper-V (full installation)
88
+ PRODUCT_HOME_BASIC = 0x00000002 # Home Basic
89
+ PRODUCT_HOME_BASIC_E = 0x00000043 # Not supported
90
+ PRODUCT_HOME_BASIC_N = 0x00000005 # Home Basic N
91
+ PRODUCT_HOME_PREMIUM = 0x00000003 # Home Premium
92
+ PRODUCT_HOME_PREMIUM_E = 0x00000044 # Not supported
93
+ PRODUCT_HOME_PREMIUM_N = 0x0000001A # Home Premium N
94
+ PRODUCT_HYPERV = 0x0000002A # Microsoft Hyper-V Server
95
+ PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT = 0x0000001E # Windows Essential Business Server Management Server
96
+ PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING = 0x00000020 # Windows Essential Business Server Messaging Server
97
+ PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY = 0x0000001F # Windows Essential Business Server Security Server
98
+ PRODUCT_PROFESSIONAL = 0x00000030 # Professional
99
+ PRODUCT_PROFESSIONAL_E = 0x00000045 # Not supported
100
+ PRODUCT_PROFESSIONAL_N = 0x00000031 # Professional N
101
+ PRODUCT_SERVER_FOR_SMALLBUSINESS = 0x00000018 # Windows Server 2008 for Windows Essential Server Solutions
102
+ PRODUCT_SERVER_FOR_SMALLBUSINESS_V = 0x00000023 # Windows Server 2008 without Hyper-V for Windows Essential Server Solutions
103
+ PRODUCT_SERVER_FOUNDATION = 0x00000021 # Server Foundation
104
+ PRODUCT_HOME_PREMIUM_SERVER = 0x00000022 # Windows Home Server 2011
105
+ PRODUCT_SB_SOLUTION_SERVER = 0x00000032 # Windows Small Business Server 2011 Essentials
106
+ PRODUCT_HOME_SERVER = 0x00000013 # Windows Storage Server 2008 R2 Essentials
107
+ PRODUCT_SMALLBUSINESS_SERVER = 0x00000009 # Windows Small Business Server
108
+ PRODUCT_SOLUTION_EMBEDDEDSERVER = 0x00000038 # Windows MultiPoint Server
109
+ PRODUCT_STANDARD_SERVER = 0x00000007 # Server Standard (full installation)
110
+ PRODUCT_STANDARD_SERVER_CORE = 0x0000000D # Server Standard (core installation)
111
+ PRODUCT_STANDARD_SERVER_CORE_V = 0x00000028 # Server Standard without Hyper-V (core installation)
112
+ PRODUCT_STANDARD_SERVER_V = 0x00000024 # Server Standard without Hyper-V (full installation)
113
+ PRODUCT_STARTER = 0x0000000B # Starter
114
+ PRODUCT_STARTER_E = 0x00000042 # Not supported
115
+ PRODUCT_STARTER_N = 0x0000002F # Starter N
116
+ PRODUCT_STORAGE_ENTERPRISE_SERVER = 0x00000017 # Storage Server Enterprise
117
+ PRODUCT_STORAGE_EXPRESS_SERVER = 0x00000014 # Storage Server Express
118
+ PRODUCT_STORAGE_STANDARD_SERVER = 0x00000015 # Storage Server Standard
119
+ PRODUCT_STORAGE_WORKGROUP_SERVER = 0x00000016 # Storage Server Workgroup
120
+ PRODUCT_UNDEFINED = 0x00000000 # An unknown product
121
+ PRODUCT_ULTIMATE = 0x00000001 # Ultimate
122
+ PRODUCT_ULTIMATE_E = 0x00000047 # Not supported
123
+ PRODUCT_ULTIMATE_N = 0x0000001C # Ultimate N
124
+ PRODUCT_WEB_SERVER = 0x00000011 # Web Server (full installation)
125
+ PRODUCT_WEB_SERVER_CORE = 0x0000001D # Web Server (core installation)
126
+
127
+ # GetSystemMetrics
128
+ # The build number if the system is Windows Server 2003 R2; otherwise, 0.
129
+ SM_SERVERR2 = 89
130
+
131
+ ###############################################
132
+ # Win32 API Bindings
133
+ ###############################################
134
+
135
+ ffi_lib 'kernel32', 'user32'
136
+
137
+ class OSVERSIONINFOEX < FFI::Struct
138
+ layout :dw_os_version_info_size, :DWORD,
139
+ :dw_major_version, :DWORD,
140
+ :dw_minor_version, :DWORD,
141
+ :dw_build_number, :DWORD,
142
+ :dw_platform_id, :DWORD,
143
+ :sz_csd_version, [:BYTE, 256],
144
+ :w_service_pack_major, :WORD,
145
+ :w_service_pack_minor, :WORD,
146
+ :w_suite_mask, :WORD,
147
+ :w_product_type, :BYTE,
148
+ :w_reserved, :BYTE
149
+ end
150
+
151
+ =begin
152
+ BOOL WINAPI CloseHandle(
153
+ __in HANDLE hObject
154
+ );
155
+ =end
156
+ safe_attach_function :CloseHandle, [ :HANDLE ], :BOOL
157
+
158
+ =begin
159
+ DWORD WINAPI GetVersion(void);
160
+ =end
161
+ safe_attach_function :GetVersion, [], :DWORD
162
+
163
+ =begin
164
+ BOOL WINAPI GetVersionEx(
165
+ __inout LPOSVERSIONINFO lpVersionInfo
166
+ );
167
+ =end
168
+ safe_attach_function :GetVersionExW, [:pointer], :BOOL
169
+ safe_attach_function :GetVersionExA, [:pointer], :BOOL
170
+
171
+ =begin
172
+ BOOL WINAPI GetProductInfo(
173
+ __in DWORD dwOSMajorVersion,
174
+ __in DWORD dwOSMinorVersion,
175
+ __in DWORD dwSpMajorVersion,
176
+ __in DWORD dwSpMinorVersion,
177
+ __out PDWORD pdwReturnedProductType
178
+ );
179
+ =end
180
+ safe_attach_function :GetProductInfo, [:DWORD, :DWORD, :DWORD, :DWORD, :PDWORD], :BOOL
181
+
182
+ =begin
183
+ int WINAPI GetSystemMetrics(
184
+ __in int nIndex
185
+ );
186
+ =end
187
+ safe_attach_function :GetSystemMetrics, [:int], :int
188
+
189
+ end
190
+ end
191
+ end
192
+ end
@@ -0,0 +1,178 @@
1
+ #
2
+ # Author:: Seth Chisamore (<schisamo@opscode.com>)
3
+ # Copyright:: Copyright 2011 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/win32/api'
20
+
21
+ class Chef
22
+ module ReservedNames::Win32
23
+ module API
24
+ module Unicode
25
+ extend Chef::ReservedNames::Win32::API
26
+
27
+ ###############################################
28
+ # Win32 API Constants
29
+ ###############################################
30
+
31
+ CP_ACP = 0
32
+ CP_OEMCP = 1
33
+ CP_MACCP = 2
34
+ CP_THREAD_ACP = 3
35
+ CP_SYMBOL = 42
36
+ CP_UTF7 = 65000
37
+ CP_UTF8 = 65001
38
+
39
+ MB_PRECOMPOSED = 0x00000001
40
+ MB_COMPOSITE = 0x00000002
41
+ MB_USEGLYPHCHARS = 0x00000004
42
+ MB_ERR_INVALID_CHARS = 0x00000008
43
+
44
+ WC_COMPOSITECHECK = 0x00000200
45
+ WC_DISCARDNS = 0x00000010
46
+ WC_SEPCHARS = 0x00000020
47
+ WC_DEFAULTCHAR = 0x00000040
48
+ WC_NO_BEST_FIT_CHARS = 0x00000400
49
+
50
+ ANSI_CHARSET = 0
51
+ DEFAULT_CHARSET = 1
52
+ SYMBOL_CHARSET = 2
53
+ SHIFTJIS_CHARSET = 128
54
+ HANGEUL_CHARSET = 129
55
+ HANGUL_CHARSET = 129
56
+ GB2312_CHARSET = 134
57
+ CHINESEBIG5_CHARSET = 136
58
+ OEM_CHARSET = 255
59
+ JOHAB_CHARSET = 130
60
+ HEBREW_CHARSET = 177
61
+ ARABIC_CHARSET = 178
62
+ GREEK_CHARSET = 161
63
+ TURKISH_CHARSET = 162
64
+ VIETNAMESE_CHARSET = 163
65
+ THAI_CHARSET = 222
66
+ EASTEUROPE_CHARSET = 238
67
+ RUSSIAN_CHARSET = 204
68
+
69
+ IS_TEXT_UNICODE_ASCII16 = 0x0001
70
+ IS_TEXT_UNICODE_REVERSE_ASCII16 = 0x0010
71
+ IS_TEXT_UNICODE_STATISTICS = 0x0002
72
+ IS_TEXT_UNICODE_REVERSE_STATISTICS = 0x0020
73
+ IS_TEXT_UNICODE_CONTROLS = 0x0004
74
+ IS_TEXT_UNICODE_REVERSE_CONTROLS = 0x0040
75
+ IS_TEXT_UNICODE_SIGNATURE = 0x0008
76
+ IS_TEXT_UNICODE_REVERSE_SIGNATURE = 0x0080
77
+ IS_TEXT_UNICODE_ILLEGAL_CHARS = 0x0100
78
+ IS_TEXT_UNICODE_ODD_LENGTH = 0x0200
79
+ IS_TEXT_UNICODE_DBCS_LEADBYTE = 0x0400
80
+ IS_TEXT_UNICODE_NULL_BYTES = 0x1000
81
+ IS_TEXT_UNICODE_UNICODE_MASK = 0x000F
82
+ IS_TEXT_UNICODE_REVERSE_MASK = 0x00F0
83
+ IS_TEXT_UNICODE_NOT_UNICODE_MASK = 0x0F00
84
+ IS_TEXT_UNICODE_NOT_ASCII_MASK = 0xF000
85
+
86
+ TCI_SRCCHARSET = 1
87
+ TCI_SRCCODEPAGE = 2
88
+ TCI_SRCFONTSIG = 3
89
+ TCI_SRCLOCALE = 0x100
90
+
91
+ ###############################################
92
+ # Win32 API Bindings
93
+ ###############################################
94
+
95
+ ffi_lib 'kernel32', 'advapi32'
96
+
97
+ =begin
98
+ BOOL IsTextUnicode(
99
+ __in const VOID *lpv,
100
+ __in int iSize,
101
+ __inout LPINT lpiResult
102
+ );
103
+ =end
104
+ safe_attach_function :IsTextUnicode, [:pointer, :int, :LPINT], :BOOL
105
+
106
+ =begin
107
+ int MultiByteToWideChar(
108
+ __in UINT CodePage,
109
+ __in DWORD dwFlags,
110
+ __in LPCSTR lpMultiByteStr,
111
+ __in int cbMultiByte,
112
+ __out LPWSTR lpWideCharStr,
113
+ __in int cchWideChar
114
+ );
115
+ =end
116
+ safe_attach_function :MultiByteToWideChar, [:UINT, :DWORD, :LPCSTR, :int, :LPWSTR, :int], :int
117
+
118
+ =begin
119
+ int WideCharToMultiByte(
120
+ __in UINT CodePage,
121
+ __in DWORD dwFlags,
122
+ __in LPCWSTR lpWideCharStr,
123
+ __in int cchWideChar,
124
+ __out LPSTR lpMultiByteStr,
125
+ __in int cbMultiByte,
126
+ __in LPCSTR lpDefaultChar,
127
+ __out LPBOOL lpUsedDefaultChar
128
+ );
129
+ =end
130
+ safe_attach_function :WideCharToMultiByte, [:UINT, :DWORD, :LPCWSTR, :int, :LPSTR, :int, :LPCSTR, :LPBOOL], :int
131
+
132
+ ###############################################
133
+ # Helpers
134
+ ###############################################
135
+
136
+ def utf8_to_wide(ustring)
137
+ # ensure it is actually UTF-8
138
+ # Ruby likes to mark binary data as ASCII-8BIT
139
+ ustring = (ustring + "").force_encoding('UTF-8') if ustring.respond_to?(:force_encoding) && ustring.encoding.name != "UTF-8"
140
+
141
+ # ensure we have the double-null termination Windows Wide likes
142
+ ustring = ustring + "\000\000" if ustring[-1].chr != "\000"
143
+
144
+ # encode it all as UTF-16LE AKA Windows Wide Character AKA Windows Unicode
145
+ ustring = begin
146
+ if ustring.respond_to?(:encode)
147
+ ustring.encode('UTF-16LE')
148
+ else
149
+ require 'iconv'
150
+ Iconv.conv("UTF-16LE", "UTF-8", ustring)
151
+ end
152
+ end
153
+ ustring
154
+ end
155
+
156
+ def wide_to_utf8(wstring)
157
+ # ensure it is actually UTF-16LE
158
+ # Ruby likes to mark binary data as ASCII-8BIT
159
+ wstring = wstring.force_encoding('UTF-16LE') if wstring.respond_to?(:force_encoding)
160
+
161
+ # encode it all as UTF-8
162
+ wstring = begin
163
+ if wstring.respond_to?(:encode)
164
+ wstring.encode('UTF-8')
165
+ else
166
+ require 'iconv'
167
+ Iconv.conv("UTF-8", "UTF-16LE", wstring)
168
+ end
169
+ end
170
+ # remove trailing CRLF and NULL characters
171
+ wstring.strip!
172
+ wstring
173
+ end
174
+
175
+ end
176
+ end
177
+ end
178
+ end
@@ -0,0 +1,73 @@
1
+ #
2
+ # Author:: John Keiser (<jkeiser@opscode.com>)
3
+ # Copyright:: Copyright 2011 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require 'chef/win32/api/error'
20
+ require 'chef/win32/memory'
21
+ require 'chef/win32/unicode'
22
+ require 'chef/exceptions'
23
+
24
+ class Chef
25
+ module ReservedNames::Win32
26
+ class Error
27
+ include Chef::ReservedNames::Win32::API::Error
28
+ extend Chef::ReservedNames::Win32::API::Error
29
+
30
+ def self.format_message(message_id = 0, args = {})
31
+ flags = args[:flags] || FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY
32
+ source = args[:source]
33
+ language_id = args[:language_id] || 0
34
+ varargs = args[:varargs] || [:int, 0]
35
+ buffer = FFI::MemoryPointer.new :pointer
36
+ num_chars = FormatMessageW(flags | FORMAT_MESSAGE_ALLOCATE_BUFFER, source, message_id, language_id, buffer, 0, *varargs)
37
+ if num_chars == 0
38
+ raise!
39
+ end
40
+
41
+ # Extract the string
42
+ begin
43
+ return buffer.read_pointer.read_wstring(num_chars)
44
+ ensure
45
+ Chef::ReservedNames::Win32::Memory.local_free(buffer.read_pointer)
46
+ end
47
+ end
48
+
49
+ def self.get_last_error
50
+ GetLastError()
51
+ end
52
+
53
+ # Raises the last error. This should only be called by
54
+ # Win32 API wrapper functions, and then only when wrapped
55
+ # in an if() statement (since it unconditionally exits)
56
+ # === Returns
57
+ # nil::: always returns nil when it does not raise
58
+ # === Raises
59
+ # Chef::Exceptions::Win32APIError:::
60
+ def self.raise!(message = nil)
61
+ code = get_last_error
62
+ msg = format_message(code).strip
63
+ formatted_message = ""
64
+ formatted_message << message if message
65
+ formatted_message << "---- Begin Win32 API output ----\n"
66
+ formatted_message << "System Error Code: #{code}\n"
67
+ formatted_message << "System Error Message: #{msg}\n"
68
+ formatted_message << "---- End Win32 API output ----\n"
69
+ raise Chef::Exceptions::Win32APIError, msg + "\n" + formatted_message
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,167 @@
1
+ #
2
+ # Author:: Seth Chisamore (<schisamo@opscode.com>)
3
+ # Author:: Mark Mzyk (<mmzyk@ospcode.com>)
4
+ # Copyright:: Copyright 2011 Opscode, Inc.
5
+ # License:: Apache License, Version 2.0
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+ #
19
+
20
+ require 'chef/win32/api/file'
21
+ require 'chef/win32/api/security'
22
+ require 'chef/win32/error'
23
+
24
+ class Chef
25
+ module ReservedNames::Win32
26
+ class File
27
+ include Chef::ReservedNames::Win32::API::File
28
+ extend Chef::ReservedNames::Win32::API::File
29
+
30
+ # Creates a symbolic link called +new_name+ for the file or directory
31
+ # +old_name+.
32
+ #
33
+ # This method requires Windows Vista or later to work. Otherwise, it
34
+ # returns nil as per MRI.
35
+ #
36
+ def self.link(old_name, new_name)
37
+ raise Errno::ENOENT, "(#{old_name}, #{new_name})" unless ::File.exist?(old_name)
38
+ # TODO do a check for CreateHardLinkW and
39
+ # raise NotImplemented exception on older Windows
40
+ old_name = encode_path(old_name)
41
+ new_name = encode_path(new_name)
42
+ unless CreateHardLinkW(new_name, old_name, nil)
43
+ Chef::ReservedNames::Win32::Error.raise!
44
+ end
45
+ end
46
+
47
+ # Creates a symbolic link called +new_name+ for the file or directory
48
+ # +old_name+.
49
+ #
50
+ # This method requires Windows Vista or later to work. Otherwise, it
51
+ # returns nil as per MRI.
52
+ #
53
+ def self.symlink(old_name, new_name)
54
+ # raise Errno::ENOENT, "(#{old_name}, #{new_name})" unless ::File.exist?(old_name)
55
+ # TODO do a check for CreateSymbolicLinkW and
56
+ # raise NotImplemented exception on older Windows
57
+ flags = ::File.directory?(old_name) ? SYMBOLIC_LINK_FLAG_DIRECTORY : 0
58
+ old_name = encode_path(old_name)
59
+ new_name = encode_path(new_name)
60
+ unless CreateSymbolicLinkW(new_name, old_name, flags)
61
+ Chef::ReservedNames::Win32::Error.raise!
62
+ end
63
+ end
64
+
65
+ # Return true if the named file is a symbolic link, false otherwise.
66
+ #
67
+ # This method requires Windows Vista or later to work. Otherwise, it
68
+ # always returns false as per MRI.
69
+ #
70
+ def self.symlink?(file_name)
71
+ is_symlink = false
72
+ path = encode_path(file_name)
73
+ if ::File.exists?(file_name)
74
+ if ((GetFileAttributesW(path) & FILE_ATTRIBUTE_REPARSE_POINT) > 0)
75
+ file_search_handle(file_name) do |handle, find_data|
76
+ if find_data[:dw_reserved_0] == IO_REPARSE_TAG_SYMLINK
77
+ is_symlink = true
78
+ end
79
+ end
80
+ end
81
+ end
82
+ is_symlink
83
+ end
84
+
85
+ # Returns the path of the of the symbolic link referred to by +file+.
86
+ #
87
+ # Requires Windows Vista or later. On older versions of Windows it
88
+ # will raise a NotImplementedError, as per MRI.
89
+ #
90
+ def self.readlink(link_name)
91
+ raise Errno::ENOENT, link_name unless ::File.exists?(link_name)
92
+ symlink_file_handle(link_name) do |handle|
93
+ # Go to DeviceIoControl to get the symlink information
94
+ # http://msdn.microsoft.com/en-us/library/windows/desktop/aa364571(v=vs.85).aspx
95
+ reparse_buffer = FFI::MemoryPointer.new(MAXIMUM_REPARSE_DATA_BUFFER_SIZE)
96
+ parsed_size = FFI::Buffer.new(:long).write_long(0)
97
+ if DeviceIoControl(handle, FSCTL_GET_REPARSE_POINT, nil, 0, reparse_buffer, MAXIMUM_REPARSE_DATA_BUFFER_SIZE, parsed_size, nil) == 0
98
+ Chef::ReservedNames::Win32::Error.raise!
99
+ end
100
+
101
+ # Ensure it's a symbolic link
102
+ reparse_buffer = REPARSE_DATA_BUFFER.new(reparse_buffer)
103
+ if reparse_buffer[:ReparseTag] != IO_REPARSE_TAG_SYMLINK
104
+ raise Errno::EACCES, "#{link_name} is not a symlink"
105
+ end
106
+
107
+ # Return the link destination (strip off \??\ at the beginning, which is a local filesystem thing)
108
+ link_dest = reparse_buffer.reparse_buffer.substitute_name
109
+ if link_dest =~ /^\\\?\?\\/
110
+ link_dest = link_dest[4..-1]
111
+ end
112
+ link_dest
113
+ end
114
+ end
115
+
116
+ # Gets the short form of a path (Administrator -> ADMINI~1)
117
+ def self.get_short_path_name(path)
118
+ path = path.to_wstring
119
+ size = GetShortPathNameW(path, nil, 0)
120
+ if size == 0
121
+ Chef::ReservedNames::Win32::Error.raise!
122
+ end
123
+ result = FFI::MemoryPointer.new :char, (size+1)*2
124
+ if GetShortPathNameW(path, result, size+1) == 0
125
+ Chef::ReservedNames::Win32::Error.raise!
126
+ end
127
+ result.read_wstring(size)
128
+ end
129
+
130
+ # Gets the long form of a path (ADMINI~1 -> Administrator)
131
+ def self.get_long_path_name(path)
132
+ path = path.to_wstring
133
+ size = GetLongPathNameW(path, nil, 0)
134
+ if size == 0
135
+ Chef::ReservedNames::Win32::Error.raise!
136
+ end
137
+ result = FFI::MemoryPointer.new :char, (size+1)*2
138
+ if GetLongPathNameW(path, result, size+1) == 0
139
+ Chef::ReservedNames::Win32::Error.raise!
140
+ end
141
+ result.read_wstring(size)
142
+ end
143
+
144
+ def self.info(file_name)
145
+ Info.new(file_name)
146
+ end
147
+
148
+ def self.verify_links_supported!
149
+ begin
150
+ CreateSymbolicLinkW(nil)
151
+ rescue Chef::Exceptions::Win32APIFunctionNotImplemented => e
152
+ raise e
153
+ rescue Exception
154
+ # things are ok.
155
+ end
156
+ end
157
+
158
+ # ::File compat
159
+ class << self
160
+ alias :stat :info
161
+ end
162
+
163
+ end
164
+ end
165
+ end
166
+
167
+ require 'chef/win32/file/info'