chef 15.0.300-universal-mingw32 → 15.1.36-universal-mingw32

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 (1983) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +94 -93
  3. data/LICENSE +201 -201
  4. data/README.md +64 -64
  5. data/Rakefile +81 -80
  6. data/bin/knife +24 -24
  7. data/chef-universal-mingw32.gemspec +22 -22
  8. data/chef.gemspec +60 -60
  9. data/distro/powershell/chef/chef.psm1 +459 -459
  10. data/ext/win32-eventlog/Rakefile +53 -53
  11. data/ext/win32-eventlog/chef-log.man +56 -56
  12. data/lib/.DS_Store +0 -0
  13. data/lib/chef.rb +35 -35
  14. data/lib/chef/.DS_Store +0 -0
  15. data/lib/chef/action_collection.rb +252 -252
  16. data/lib/chef/api_client.rb +228 -228
  17. data/lib/chef/api_client/registration.rb +200 -200
  18. data/lib/chef/api_client_v1.rb +326 -326
  19. data/lib/chef/application.rb +415 -409
  20. data/lib/chef/application/apply.rb +225 -225
  21. data/lib/chef/application/client.rb +546 -546
  22. data/lib/chef/application/exit_code.rb +157 -157
  23. data/lib/chef/application/knife.rb +222 -222
  24. data/lib/chef/application/solo.rb +377 -377
  25. data/lib/chef/application/windows_service.rb +338 -338
  26. data/lib/chef/application/windows_service_manager.rb +205 -205
  27. data/lib/chef/applications.rb +4 -4
  28. data/lib/chef/blacklist.rb +81 -81
  29. data/lib/chef/chef_class.rb +248 -248
  30. data/lib/chef/chef_fs.rb +59 -59
  31. data/lib/chef/chef_fs/chef_fs_data_store.rb +870 -870
  32. data/lib/chef/chef_fs/command_line.rb +291 -291
  33. data/lib/chef/chef_fs/config.rb +284 -284
  34. data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +26 -26
  35. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +39 -39
  36. data/lib/chef/chef_fs/data_handler/client_key_data_handler.rb +11 -11
  37. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +35 -35
  38. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +38 -38
  39. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +67 -67
  40. data/lib/chef/chef_fs/data_handler/data_handler_base.rb +207 -207
  41. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +40 -40
  42. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +55 -55
  43. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +36 -36
  44. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +36 -36
  45. data/lib/chef/chef_fs/data_handler/organization_invites_data_handler.rb +17 -17
  46. data/lib/chef/chef_fs/data_handler/organization_members_data_handler.rb +17 -17
  47. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +48 -48
  48. data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +33 -33
  49. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +40 -40
  50. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +29 -29
  51. data/lib/chef/chef_fs/file_pattern.rb +301 -301
  52. data/lib/chef/chef_fs/file_system.rb +431 -431
  53. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -47
  54. data/lib/chef/chef_fs/file_system/base_fs_object.rb +187 -187
  55. data/lib/chef/chef_fs/file_system/chef_server/acl_dir.rb +65 -65
  56. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +67 -67
  57. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +75 -75
  58. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +196 -196
  59. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifact_dir.rb +38 -38
  60. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +106 -106
  61. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +208 -208
  62. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +78 -78
  63. data/lib/chef/chef_fs/file_system/chef_server/cookbook_subdir.rb +61 -61
  64. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_acl_dir.rb +42 -42
  65. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +105 -105
  66. data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +76 -76
  67. data/lib/chef/chef_fs/file_system/chef_server/data_bag_entry.rb +19 -19
  68. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +67 -67
  69. data/lib/chef/chef_fs/file_system/chef_server/environments_dir.rb +56 -56
  70. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +51 -51
  71. data/lib/chef/chef_fs/file_system/chef_server/org_entry.rb +35 -35
  72. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +65 -65
  73. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +64 -64
  74. data/lib/chef/chef_fs/file_system/chef_server/policies_acl_dir.rb +41 -41
  75. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +158 -158
  76. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +136 -136
  77. data/lib/chef/chef_fs/file_system/chef_server/policy_groups_dir.rb +43 -43
  78. data/lib/chef/chef_fs/file_system/chef_server/policy_revision_entry.rb +38 -38
  79. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +176 -176
  80. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +207 -207
  81. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbook_dir.rb +45 -45
  82. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +111 -111
  83. data/lib/chef/chef_fs/file_system/exceptions.rb +105 -105
  84. data/lib/chef/chef_fs/file_system/memory/memory_dir.rb +53 -53
  85. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +20 -20
  86. data/lib/chef/chef_fs/file_system/memory/memory_root.rb +23 -23
  87. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +62 -62
  88. data/lib/chef/chef_fs/file_system/nonexistent_fs_object.rb +32 -32
  89. data/lib/chef/chef_fs/file_system/repository/acl.rb +45 -45
  90. data/lib/chef/chef_fs/file_system/repository/acls_dir.rb +50 -50
  91. data/lib/chef/chef_fs/file_system/repository/acls_sub_dir.rb +38 -38
  92. data/lib/chef/chef_fs/file_system/repository/base_file.rb +155 -155
  93. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_artifact_dir.rb +41 -41
  94. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +143 -143
  95. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +177 -177
  96. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +232 -232
  97. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_versioned_cookbook_dir.rb +42 -42
  98. data/lib/chef/chef_fs/file_system/repository/client.rb +38 -38
  99. data/lib/chef/chef_fs/file_system/repository/client_key.rb +38 -38
  100. data/lib/chef/chef_fs/file_system/repository/client_keys_dir.rb +42 -42
  101. data/lib/chef/chef_fs/file_system/repository/client_keys_sub_dir.rb +38 -38
  102. data/lib/chef/chef_fs/file_system/repository/clients_dir.rb +37 -37
  103. data/lib/chef/chef_fs/file_system/repository/container.rb +38 -38
  104. data/lib/chef/chef_fs/file_system/repository/containers_dir.rb +37 -37
  105. data/lib/chef/chef_fs/file_system/repository/cookbook_artifacts_dir.rb +36 -36
  106. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +51 -51
  107. data/lib/chef/chef_fs/file_system/repository/data_bag.rb +39 -39
  108. data/lib/chef/chef_fs/file_system/repository/data_bag_item.rb +38 -38
  109. data/lib/chef/chef_fs/file_system/repository/data_bags_dir.rb +39 -39
  110. data/lib/chef/chef_fs/file_system/repository/directory.rb +167 -167
  111. data/lib/chef/chef_fs/file_system/repository/environment.rb +38 -38
  112. data/lib/chef/chef_fs/file_system/repository/environments_dir.rb +37 -37
  113. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +151 -151
  114. data/lib/chef/chef_fs/file_system/repository/group.rb +38 -38
  115. data/lib/chef/chef_fs/file_system/repository/groups_dir.rb +37 -37
  116. data/lib/chef/chef_fs/file_system/repository/node.rb +38 -38
  117. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +59 -59
  118. data/lib/chef/chef_fs/file_system/repository/policies_dir.rb +42 -42
  119. data/lib/chef/chef_fs/file_system/repository/policy.rb +38 -38
  120. data/lib/chef/chef_fs/file_system/repository/policy_group.rb +38 -38
  121. data/lib/chef/chef_fs/file_system/repository/policy_groups_dir.rb +37 -37
  122. data/lib/chef/chef_fs/file_system/repository/role.rb +38 -38
  123. data/lib/chef/chef_fs/file_system/repository/roles_dir.rb +37 -37
  124. data/lib/chef/chef_fs/file_system/repository/user.rb +38 -38
  125. data/lib/chef/chef_fs/file_system/repository/users_dir.rb +37 -37
  126. data/lib/chef/chef_fs/file_system/repository/versioned_cookbooks_dir.rb +34 -34
  127. data/lib/chef/chef_fs/file_system_cache.rb +80 -80
  128. data/lib/chef/chef_fs/knife.rb +160 -161
  129. data/lib/chef/chef_fs/parallelizer.rb +103 -103
  130. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +35 -35
  131. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +277 -277
  132. data/lib/chef/chef_fs/path_utils.rb +127 -127
  133. data/lib/chef/client.rb +934 -934
  134. data/lib/chef/config.rb +84 -84
  135. data/lib/chef/config_fetcher.rb +72 -72
  136. data/lib/chef/constants.rb +28 -28
  137. data/lib/chef/cookbook/chefignore.rb +77 -77
  138. data/lib/chef/cookbook/cookbook_collection.rb +62 -62
  139. data/lib/chef/cookbook/cookbook_version_loader.rb +278 -278
  140. data/lib/chef/cookbook/file_system_file_vendor.rb +57 -57
  141. data/lib/chef/cookbook/file_vendor.rb +70 -70
  142. data/lib/chef/cookbook/gem_installer.rb +94 -94
  143. data/lib/chef/cookbook/manifest_v0.rb +73 -73
  144. data/lib/chef/cookbook/manifest_v2.rb +45 -45
  145. data/lib/chef/cookbook/metadata.rb +752 -752
  146. data/lib/chef/cookbook/remote_file_vendor.rb +86 -86
  147. data/lib/chef/cookbook/synchronizer.rb +328 -328
  148. data/lib/chef/cookbook/syntax_check.rb +259 -259
  149. data/lib/chef/cookbook_loader.rb +185 -185
  150. data/lib/chef/cookbook_manifest.rb +328 -328
  151. data/lib/chef/cookbook_site_streaming_uploader.rb +241 -241
  152. data/lib/chef/cookbook_uploader.rb +156 -156
  153. data/lib/chef/cookbook_version.rb +544 -544
  154. data/lib/chef/daemon.rb +131 -131
  155. data/lib/chef/data_bag.rb +174 -174
  156. data/lib/chef/data_bag_item.rb +209 -209
  157. data/lib/chef/data_collector.rb +282 -324
  158. data/lib/chef/data_collector/config_validation.rb +131 -88
  159. data/lib/chef/data_collector/error_handlers.rb +116 -116
  160. data/lib/chef/data_collector/message_helpers.rb +50 -50
  161. data/lib/chef/data_collector/run_end_message.rb +172 -172
  162. data/lib/chef/data_collector/run_start_message.rb +60 -60
  163. data/lib/chef/decorator.rb +81 -81
  164. data/lib/chef/decorator/lazy.rb +60 -60
  165. data/lib/chef/decorator/lazy_array.rb +59 -59
  166. data/lib/chef/decorator/unchain.rb +43 -43
  167. data/lib/chef/delayed_evaluator.rb +21 -21
  168. data/lib/chef/deprecated.rb +241 -241
  169. data/lib/chef/deprecation/warnings.rb +38 -38
  170. data/lib/chef/digester.rb +74 -74
  171. data/lib/chef/dist.rb +50 -19
  172. data/lib/chef/dsl.rb +6 -6
  173. data/lib/chef/dsl/.DS_Store +0 -0
  174. data/lib/chef/dsl/cheffish.rb +65 -65
  175. data/lib/chef/dsl/core.rb +52 -52
  176. data/lib/chef/dsl/data_query.rb +103 -103
  177. data/lib/chef/dsl/declare_resource.rb +319 -319
  178. data/lib/chef/dsl/definitions.rb +43 -43
  179. data/lib/chef/dsl/include_attribute.rb +57 -57
  180. data/lib/chef/dsl/include_recipe.rb +34 -34
  181. data/lib/chef/dsl/platform_introspection.rb +269 -269
  182. data/lib/chef/dsl/powershell.rb +29 -29
  183. data/lib/chef/dsl/reboot_pending.rb +57 -57
  184. data/lib/chef/dsl/recipe.rb +74 -74
  185. data/lib/chef/dsl/registry_helper.rb +63 -63
  186. data/lib/chef/dsl/resources.rb +47 -47
  187. data/lib/chef/dsl/universal.rb +60 -62
  188. data/lib/chef/encrypted_data_bag_item.rb +158 -157
  189. data/lib/chef/encrypted_data_bag_item/assertions.rb +54 -54
  190. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -56
  191. data/lib/chef/encrypted_data_bag_item/decryption_failure.rb +22 -22
  192. data/lib/chef/encrypted_data_bag_item/decryptor.rb +232 -232
  193. data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +37 -37
  194. data/lib/chef/encrypted_data_bag_item/encryption_failure.rb +22 -22
  195. data/lib/chef/encrypted_data_bag_item/encryptor.rb +225 -225
  196. data/lib/chef/encrypted_data_bag_item/unacceptable_encrypted_data_bag_item_format.rb +22 -22
  197. data/lib/chef/encrypted_data_bag_item/unsupported_cipher.rb +22 -22
  198. data/lib/chef/encrypted_data_bag_item/unsupported_encrypted_data_bag_item_format.rb +22 -22
  199. data/lib/chef/environment.rb +320 -319
  200. data/lib/chef/event_dispatch/base.rb +431 -431
  201. data/lib/chef/event_dispatch/dispatcher.rb +88 -88
  202. data/lib/chef/event_dispatch/dsl.rb +65 -65
  203. data/lib/chef/event_dispatch/events_output_stream.rb +37 -37
  204. data/lib/chef/event_loggers/base.rb +62 -62
  205. data/lib/chef/event_loggers/windows_eventlog.rb +102 -101
  206. data/lib/chef/exceptions.rb +514 -514
  207. data/lib/chef/file_access_control.rb +75 -75
  208. data/lib/chef/file_access_control/unix.rb +290 -290
  209. data/lib/chef/file_access_control/windows.rb +337 -337
  210. data/lib/chef/file_cache.rb +223 -223
  211. data/lib/chef/file_content_management/content_base.rb +58 -58
  212. data/lib/chef/file_content_management/deploy.rb +37 -37
  213. data/lib/chef/file_content_management/deploy/cp.rb +48 -48
  214. data/lib/chef/file_content_management/deploy/mv_unix.rb +77 -77
  215. data/lib/chef/file_content_management/deploy/mv_windows.rb +103 -103
  216. data/lib/chef/file_content_management/tempfile.rb +107 -107
  217. data/lib/chef/formatters/base.rb +246 -246
  218. data/lib/chef/formatters/doc.rb +401 -401
  219. data/lib/chef/formatters/error_description.rb +86 -86
  220. data/lib/chef/formatters/error_inspectors.rb +19 -19
  221. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +184 -184
  222. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +154 -154
  223. data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +168 -168
  224. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +82 -82
  225. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +129 -129
  226. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +148 -148
  227. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +125 -125
  228. data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +122 -122
  229. data/lib/chef/formatters/error_mapper.rb +85 -85
  230. data/lib/chef/formatters/indentable_output_stream.rb +182 -182
  231. data/lib/chef/formatters/minimal.rb +235 -235
  232. data/lib/chef/guard_interpreter.rb +32 -32
  233. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +44 -44
  234. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +138 -138
  235. data/lib/chef/handler.rb +266 -266
  236. data/lib/chef/handler/error_report.rb +33 -33
  237. data/lib/chef/handler/json_file.rb +62 -62
  238. data/lib/chef/http.rb +539 -539
  239. data/lib/chef/http/api_versions.rb +56 -56
  240. data/lib/chef/http/auth_credentials.rb +59 -59
  241. data/lib/chef/http/authenticator.rb +118 -118
  242. data/lib/chef/http/basic_client.rb +157 -157
  243. data/lib/chef/http/cookie_jar.rb +31 -31
  244. data/lib/chef/http/cookie_manager.rb +59 -59
  245. data/lib/chef/http/decompressor.rb +142 -142
  246. data/lib/chef/http/http_request.rb +190 -190
  247. data/lib/chef/http/json_input.rb +73 -73
  248. data/lib/chef/http/json_output.rb +81 -81
  249. data/lib/chef/http/json_to_model_output.rb +34 -34
  250. data/lib/chef/http/remote_request_id.rb +46 -46
  251. data/lib/chef/http/simple.rb +40 -40
  252. data/lib/chef/http/simple_json.rb +43 -43
  253. data/lib/chef/http/socketless_chef_zero_client.rb +210 -209
  254. data/lib/chef/http/ssl_policies.rb +130 -130
  255. data/lib/chef/http/validate_content_length.rb +114 -114
  256. data/lib/chef/json_compat.rb +68 -68
  257. data/lib/chef/key.rb +269 -269
  258. data/lib/chef/knife.rb +649 -648
  259. data/lib/chef/knife/.DS_Store +0 -0
  260. data/lib/chef/knife/bootstrap.rb +1092 -1065
  261. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +157 -158
  262. data/lib/chef/knife/bootstrap/client_builder.rb +207 -207
  263. data/lib/chef/knife/bootstrap/templates/README.md +11 -11
  264. data/lib/chef/knife/bootstrap/templates/chef-full.erb +243 -243
  265. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +276 -276
  266. data/lib/chef/knife/bootstrap/train_connector.rb +329 -325
  267. data/lib/chef/knife/client_bulk_delete.rb +103 -103
  268. data/lib/chef/knife/client_create.rb +101 -101
  269. data/lib/chef/knife/client_delete.rb +62 -62
  270. data/lib/chef/knife/client_edit.rb +52 -52
  271. data/lib/chef/knife/client_key_create.rb +70 -70
  272. data/lib/chef/knife/client_key_delete.rb +77 -77
  273. data/lib/chef/knife/client_key_edit.rb +80 -80
  274. data/lib/chef/knife/client_key_list.rb +70 -70
  275. data/lib/chef/knife/client_key_show.rb +77 -77
  276. data/lib/chef/knife/client_list.rb +41 -41
  277. data/lib/chef/knife/client_reregister.rb +58 -58
  278. data/lib/chef/knife/client_show.rb +48 -48
  279. data/lib/chef/knife/config_get.rb +126 -126
  280. data/lib/chef/knife/config_get_profile.rb +37 -37
  281. data/lib/chef/knife/config_list_profiles.rb +121 -121
  282. data/lib/chef/knife/config_use_profile.rb +50 -50
  283. data/lib/chef/knife/configure.rb +148 -147
  284. data/lib/chef/knife/configure_client.rb +48 -48
  285. data/lib/chef/knife/cookbook_bulk_delete.rb +71 -71
  286. data/lib/chef/knife/cookbook_delete.rb +151 -151
  287. data/lib/chef/knife/cookbook_download.rb +142 -142
  288. data/lib/chef/knife/cookbook_list.rb +47 -47
  289. data/lib/chef/knife/cookbook_metadata.rb +106 -106
  290. data/lib/chef/knife/cookbook_metadata_from_file.rb +43 -43
  291. data/lib/chef/knife/cookbook_show.rb +98 -98
  292. data/lib/chef/knife/cookbook_site_download.rb +40 -40
  293. data/lib/chef/knife/cookbook_site_install.rb +40 -40
  294. data/lib/chef/knife/cookbook_site_list.rb +40 -40
  295. data/lib/chef/knife/cookbook_site_search.rb +40 -40
  296. data/lib/chef/knife/cookbook_site_share.rb +41 -41
  297. data/lib/chef/knife/cookbook_site_show.rb +40 -40
  298. data/lib/chef/knife/cookbook_site_unshare.rb +41 -41
  299. data/lib/chef/knife/cookbook_upload.rb +273 -273
  300. data/lib/chef/knife/core/bootstrap_context.rb +259 -259
  301. data/lib/chef/knife/core/cookbook_scm_repo.rb +159 -159
  302. data/lib/chef/knife/core/gem_glob_loader.rb +138 -138
  303. data/lib/chef/knife/core/generic_presenter.rb +231 -231
  304. data/lib/chef/knife/core/hashed_command_loader.rb +99 -99
  305. data/lib/chef/knife/core/node_editor.rb +130 -130
  306. data/lib/chef/knife/core/node_presenter.rb +158 -158
  307. data/lib/chef/knife/core/object_loader.rb +115 -115
  308. data/lib/chef/knife/core/status_presenter.rb +172 -172
  309. data/lib/chef/knife/core/subcommand_loader.rb +183 -183
  310. data/lib/chef/knife/core/text_formatter.rb +85 -85
  311. data/lib/chef/knife/core/ui.rb +309 -309
  312. data/lib/chef/knife/core/windows_bootstrap_context.rb +379 -379
  313. data/lib/chef/knife/data_bag_create.rb +80 -80
  314. data/lib/chef/knife/data_bag_delete.rb +49 -49
  315. data/lib/chef/knife/data_bag_edit.rb +74 -74
  316. data/lib/chef/knife/data_bag_from_file.rb +113 -113
  317. data/lib/chef/knife/data_bag_list.rb +42 -42
  318. data/lib/chef/knife/data_bag_secret_options.rb +142 -142
  319. data/lib/chef/knife/data_bag_show.rb +69 -69
  320. data/lib/chef/knife/delete.rb +125 -125
  321. data/lib/chef/knife/deps.rb +156 -156
  322. data/lib/chef/knife/diff.rb +83 -83
  323. data/lib/chef/knife/download.rb +84 -84
  324. data/lib/chef/knife/edit.rb +88 -88
  325. data/lib/chef/knife/environment_compare.rb +127 -127
  326. data/lib/chef/knife/environment_create.rb +52 -52
  327. data/lib/chef/knife/environment_delete.rb +44 -44
  328. data/lib/chef/knife/environment_edit.rb +44 -44
  329. data/lib/chef/knife/environment_from_file.rb +84 -84
  330. data/lib/chef/knife/environment_list.rb +41 -41
  331. data/lib/chef/knife/environment_show.rb +47 -47
  332. data/lib/chef/knife/exec.rb +88 -87
  333. data/lib/chef/knife/key_create.rb +112 -112
  334. data/lib/chef/knife/key_create_base.rb +50 -50
  335. data/lib/chef/knife/key_delete.rb +55 -55
  336. data/lib/chef/knife/key_edit.rb +118 -118
  337. data/lib/chef/knife/key_edit_base.rb +55 -55
  338. data/lib/chef/knife/key_list.rb +88 -88
  339. data/lib/chef/knife/key_list_base.rb +45 -45
  340. data/lib/chef/knife/key_show.rb +53 -53
  341. data/lib/chef/knife/list.rb +177 -177
  342. data/lib/chef/knife/node_bulk_delete.rb +74 -74
  343. data/lib/chef/knife/node_create.rb +47 -47
  344. data/lib/chef/knife/node_delete.rb +46 -46
  345. data/lib/chef/knife/node_edit.rb +70 -70
  346. data/lib/chef/knife/node_environment_set.rb +54 -54
  347. data/lib/chef/knife/node_from_file.rb +51 -51
  348. data/lib/chef/knife/node_list.rb +44 -44
  349. data/lib/chef/knife/node_policy_set.rb +79 -79
  350. data/lib/chef/knife/node_run_list_add.rb +104 -104
  351. data/lib/chef/knife/node_run_list_remove.rb +67 -67
  352. data/lib/chef/knife/node_run_list_set.rb +66 -66
  353. data/lib/chef/knife/node_show.rb +62 -61
  354. data/lib/chef/knife/null.rb +13 -13
  355. data/lib/chef/knife/raw.rb +124 -124
  356. data/lib/chef/knife/recipe_list.rb +32 -32
  357. data/lib/chef/knife/rehash.rb +65 -65
  358. data/lib/chef/knife/role_bulk_delete.rb +65 -65
  359. data/lib/chef/knife/role_create.rb +53 -53
  360. data/lib/chef/knife/role_delete.rb +46 -46
  361. data/lib/chef/knife/role_edit.rb +45 -45
  362. data/lib/chef/knife/role_env_run_list_add.rb +87 -87
  363. data/lib/chef/knife/role_env_run_list_clear.rb +55 -55
  364. data/lib/chef/knife/role_env_run_list_remove.rb +57 -57
  365. data/lib/chef/knife/role_env_run_list_replace.rb +60 -60
  366. data/lib/chef/knife/role_env_run_list_set.rb +70 -70
  367. data/lib/chef/knife/role_from_file.rb +51 -51
  368. data/lib/chef/knife/role_list.rb +42 -42
  369. data/lib/chef/knife/role_run_list_add.rb +87 -87
  370. data/lib/chef/knife/role_run_list_clear.rb +55 -55
  371. data/lib/chef/knife/role_run_list_remove.rb +56 -56
  372. data/lib/chef/knife/role_run_list_replace.rb +60 -60
  373. data/lib/chef/knife/role_run_list_set.rb +69 -69
  374. data/lib/chef/knife/role_show.rb +48 -48
  375. data/lib/chef/knife/search.rb +194 -194
  376. data/lib/chef/knife/serve.rb +65 -64
  377. data/lib/chef/knife/show.rb +72 -72
  378. data/lib/chef/knife/ssh.rb +633 -634
  379. data/lib/chef/knife/ssl_check.rb +284 -283
  380. data/lib/chef/knife/ssl_fetch.rb +161 -161
  381. data/lib/chef/knife/status.rb +98 -97
  382. data/lib/chef/knife/supermarket_download.rb +122 -122
  383. data/lib/chef/knife/supermarket_install.rb +193 -193
  384. data/lib/chef/knife/supermarket_list.rb +65 -65
  385. data/lib/chef/knife/supermarket_search.rb +53 -53
  386. data/lib/chef/knife/supermarket_share.rb +166 -166
  387. data/lib/chef/knife/supermarket_show.rb +67 -67
  388. data/lib/chef/knife/supermarket_unshare.rb +61 -61
  389. data/lib/chef/knife/tag_create.rb +52 -52
  390. data/lib/chef/knife/tag_delete.rb +60 -60
  391. data/lib/chef/knife/tag_list.rb +47 -47
  392. data/lib/chef/knife/upload.rb +86 -86
  393. data/lib/chef/knife/user_create.rb +107 -107
  394. data/lib/chef/knife/user_delete.rb +44 -44
  395. data/lib/chef/knife/user_edit.rb +52 -52
  396. data/lib/chef/knife/user_key_create.rb +70 -70
  397. data/lib/chef/knife/user_key_delete.rb +77 -77
  398. data/lib/chef/knife/user_key_edit.rb +80 -80
  399. data/lib/chef/knife/user_key_list.rb +70 -70
  400. data/lib/chef/knife/user_key_show.rb +77 -77
  401. data/lib/chef/knife/user_list.rb +42 -42
  402. data/lib/chef/knife/user_reregister.rb +59 -59
  403. data/lib/chef/knife/user_show.rb +48 -48
  404. data/lib/chef/knife/xargs.rb +282 -282
  405. data/lib/chef/local_mode.rb +127 -126
  406. data/lib/chef/log.rb +70 -70
  407. data/lib/chef/log/syslog.rb +46 -46
  408. data/lib/chef/log/winevt.rb +100 -99
  409. data/lib/chef/mash.rb +232 -232
  410. data/lib/chef/mixin/.DS_Store +0 -0
  411. data/lib/chef/mixin/api_version_request_handling.rb +64 -64
  412. data/lib/chef/mixin/checksum.rb +37 -37
  413. data/lib/chef/mixin/convert_to_class_name.rb +126 -126
  414. data/lib/chef/mixin/create_path.rb +71 -71
  415. data/lib/chef/mixin/deep_merge.rb +140 -140
  416. data/lib/chef/mixin/deprecation.rb +117 -117
  417. data/lib/chef/mixin/descendants_tracker.rb +81 -81
  418. data/lib/chef/mixin/enforce_ownership_and_permissions.rb +39 -39
  419. data/lib/chef/mixin/file_class.rb +35 -35
  420. data/lib/chef/mixin/from_file.rb +55 -55
  421. data/lib/chef/mixin/get_source_from_package.rb +47 -47
  422. data/lib/chef/mixin/homebrew_user.rb +79 -79
  423. data/lib/chef/mixin/lazy_module_include.rb +77 -77
  424. data/lib/chef/mixin/notifying_block.rb +51 -51
  425. data/lib/chef/mixin/openssl_helper.rb +402 -402
  426. data/lib/chef/mixin/params_validate.rb +498 -498
  427. data/lib/chef/mixin/path_sanity.rb +66 -66
  428. data/lib/chef/mixin/powershell_exec.rb +105 -105
  429. data/lib/chef/mixin/powershell_out.rb +98 -98
  430. data/lib/chef/mixin/powershell_type_coercions.rb +84 -84
  431. data/lib/chef/mixin/properties.rb +355 -355
  432. data/lib/chef/mixin/provides.rb +29 -29
  433. data/lib/chef/mixin/proxified_socket.rb +42 -42
  434. data/lib/chef/mixin/securable.rb +192 -192
  435. data/lib/chef/mixin/shell_out.rb +216 -187
  436. data/lib/chef/mixin/subclass_directive.rb +37 -37
  437. data/lib/chef/mixin/template.rb +265 -260
  438. data/lib/chef/mixin/train_helpers.rb +60 -0
  439. data/lib/chef/mixin/unformatter.rb +32 -32
  440. data/lib/chef/mixin/uris.rb +42 -42
  441. data/lib/chef/mixin/user_context.rb +55 -55
  442. data/lib/chef/mixin/versioned_api.rb +84 -84
  443. data/lib/chef/mixin/which.rb +63 -52
  444. data/lib/chef/mixin/why_run.rb +326 -326
  445. data/lib/chef/mixin/wide_string.rb +54 -54
  446. data/lib/chef/mixin/windows_architecture_helper.rb +113 -113
  447. data/lib/chef/mixin/windows_env_helper.rb +67 -67
  448. data/lib/chef/mixin/xml_escape.rb +138 -138
  449. data/lib/chef/mixins.rb +12 -12
  450. data/lib/chef/monkey_patches/net_http.rb +64 -64
  451. data/lib/chef/monkey_patches/webrick-utils.rb +51 -51
  452. data/lib/chef/monkey_patches/win32/registry.rb +60 -60
  453. data/lib/chef/monologger.rb +4 -4
  454. data/lib/chef/nil_argument.rb +3 -3
  455. data/lib/chef/node.rb +732 -732
  456. data/lib/chef/node/attribute.rb +651 -651
  457. data/lib/chef/node/attribute_collections.rb +178 -178
  458. data/lib/chef/node/common_api.rb +121 -121
  459. data/lib/chef/node/immutable_collections.rb +182 -182
  460. data/lib/chef/node/mixin/deep_merge_cache.rb +61 -61
  461. data/lib/chef/node/mixin/immutablize_array.rb +179 -179
  462. data/lib/chef/node/mixin/immutablize_hash.rb +165 -165
  463. data/lib/chef/node/mixin/mashy_array.rb +68 -68
  464. data/lib/chef/node/mixin/state_tracking.rb +96 -96
  465. data/lib/chef/node_map.rb +326 -328
  466. data/lib/chef/null_logger.rb +79 -79
  467. data/lib/chef/org.rb +144 -144
  468. data/lib/chef/platform.rb +30 -30
  469. data/lib/chef/platform/priority_map.rb +41 -41
  470. data/lib/chef/platform/provider_handler_map.rb +29 -29
  471. data/lib/chef/platform/provider_mapping.rb +55 -55
  472. data/lib/chef/platform/provider_priority_map.rb +11 -11
  473. data/lib/chef/platform/query_helpers.rb +100 -100
  474. data/lib/chef/platform/rebooter.rb +71 -71
  475. data/lib/chef/platform/resource_handler_map.rb +29 -29
  476. data/lib/chef/platform/resource_priority_map.rb +11 -11
  477. data/lib/chef/platform/service_helpers.rb +125 -122
  478. data/lib/chef/policy_builder.rb +42 -42
  479. data/lib/chef/policy_builder/dynamic.rb +186 -186
  480. data/lib/chef/policy_builder/expand_node_object.rb +261 -261
  481. data/lib/chef/policy_builder/policyfile.rb +571 -571
  482. data/lib/chef/powershell.rb +57 -57
  483. data/lib/chef/property.rb +731 -731
  484. data/lib/chef/provider.rb +419 -419
  485. data/lib/chef/provider/.DS_Store +0 -0
  486. data/lib/chef/provider/apt_preference.rb +94 -94
  487. data/lib/chef/provider/apt_repository.rb +360 -360
  488. data/lib/chef/provider/apt_update.rb +80 -80
  489. data/lib/chef/provider/batch.rb +45 -45
  490. data/lib/chef/provider/cookbook_file.rb +47 -47
  491. data/lib/chef/provider/cookbook_file/content.rb +49 -49
  492. data/lib/chef/provider/cron.rb +256 -256
  493. data/lib/chef/provider/cron/aix.rb +50 -50
  494. data/lib/chef/provider/cron/solaris.rb +22 -22
  495. data/lib/chef/provider/cron/unix.rb +83 -83
  496. data/lib/chef/provider/directory.rb +164 -164
  497. data/lib/chef/provider/dsc_resource.rb +209 -209
  498. data/lib/chef/provider/dsc_script.rb +185 -185
  499. data/lib/chef/provider/execute.rb +130 -133
  500. data/lib/chef/provider/file.rb +479 -479
  501. data/lib/chef/provider/file/content.rb +39 -39
  502. data/lib/chef/provider/git.rb +359 -359
  503. data/lib/chef/provider/group.rb +179 -179
  504. data/lib/chef/provider/group/aix.rb +79 -79
  505. data/lib/chef/provider/group/dscl.rb +177 -177
  506. data/lib/chef/provider/group/gpasswd.rb +58 -58
  507. data/lib/chef/provider/group/groupadd.rb +133 -133
  508. data/lib/chef/provider/group/groupmod.rb +123 -123
  509. data/lib/chef/provider/group/pw.rb +137 -137
  510. data/lib/chef/provider/group/solaris.rb +62 -62
  511. data/lib/chef/provider/group/suse.rb +82 -82
  512. data/lib/chef/provider/group/usermod.rb +87 -87
  513. data/lib/chef/provider/group/windows.rb +110 -110
  514. data/lib/chef/provider/http_request.rb +132 -132
  515. data/lib/chef/provider/ifconfig.rb +271 -271
  516. data/lib/chef/provider/ifconfig/aix.rb +94 -94
  517. data/lib/chef/provider/ifconfig/debian.rb +88 -88
  518. data/lib/chef/provider/ifconfig/redhat.rb +54 -54
  519. data/lib/chef/provider/launchd.rb +232 -231
  520. data/lib/chef/provider/link.rb +168 -168
  521. data/lib/chef/provider/log.rb +43 -43
  522. data/lib/chef/provider/lwrp_base.rb +89 -89
  523. data/lib/chef/provider/mdadm.rb +85 -85
  524. data/lib/chef/provider/mount.rb +175 -175
  525. data/lib/chef/provider/mount/aix.rb +221 -221
  526. data/lib/chef/provider/mount/mount.rb +283 -283
  527. data/lib/chef/provider/mount/solaris.rb +275 -275
  528. data/lib/chef/provider/mount/windows.rb +92 -92
  529. data/lib/chef/provider/noop.rb +37 -37
  530. data/lib/chef/provider/ohai.rb +45 -45
  531. data/lib/chef/provider/osx_profile.rb +251 -251
  532. data/lib/chef/provider/package.rb +600 -600
  533. data/lib/chef/provider/package/.DS_Store +0 -0
  534. data/lib/chef/provider/package/apt.rb +234 -234
  535. data/lib/chef/provider/package/bff.rb +142 -142
  536. data/lib/chef/provider/package/cab.rb +187 -187
  537. data/lib/chef/provider/package/chocolatey.rb +285 -285
  538. data/lib/chef/provider/package/deb.rb +131 -131
  539. data/lib/chef/provider/package/dnf.rb +196 -196
  540. data/lib/chef/provider/package/dnf/dnf_helper.py +100 -100
  541. data/lib/chef/provider/package/dnf/python_helper.rb +171 -171
  542. data/lib/chef/provider/package/dnf/version.rb +56 -56
  543. data/lib/chef/provider/package/dpkg.rb +227 -227
  544. data/lib/chef/provider/package/freebsd/.DS_Store +0 -0
  545. data/lib/chef/provider/package/freebsd/base.rb +89 -89
  546. data/lib/chef/provider/package/freebsd/pkgng.rb +76 -76
  547. data/lib/chef/provider/package/freebsd/port.rb +56 -56
  548. data/lib/chef/provider/package/homebrew.rb +138 -138
  549. data/lib/chef/provider/package/ips.rb +85 -85
  550. data/lib/chef/provider/package/macports.rb +101 -101
  551. data/lib/chef/provider/package/msu.rb +161 -161
  552. data/lib/chef/provider/package/openbsd.rb +139 -139
  553. data/lib/chef/provider/package/pacman.rb +103 -103
  554. data/lib/chef/provider/package/paludis.rb +85 -85
  555. data/lib/chef/provider/package/portage.rb +133 -133
  556. data/lib/chef/provider/package/powershell.rb +133 -133
  557. data/lib/chef/provider/package/rpm.rb +126 -126
  558. data/lib/chef/provider/package/rubygems.rb +618 -617
  559. data/lib/chef/provider/package/smartos.rb +92 -92
  560. data/lib/chef/provider/package/snap.rb +358 -358
  561. data/lib/chef/provider/package/solaris.rb +137 -137
  562. data/lib/chef/provider/package/windows.rb +317 -317
  563. data/lib/chef/provider/package/windows/exe.rb +117 -117
  564. data/lib/chef/provider/package/windows/msi.rb +96 -96
  565. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +99 -99
  566. data/lib/chef/provider/package/yum.rb +287 -289
  567. data/lib/chef/provider/package/yum/python_helper.rb +222 -222
  568. data/lib/chef/provider/package/yum/rpm_utils.rb +641 -641
  569. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +79 -79
  570. data/lib/chef/provider/package/yum/simplejson/__init__.py +318 -318
  571. data/lib/chef/provider/package/yum/simplejson/decoder.py +354 -354
  572. data/lib/chef/provider/package/yum/simplejson/encoder.py +440 -440
  573. data/lib/chef/provider/package/yum/simplejson/scanner.py +65 -65
  574. data/lib/chef/provider/package/yum/simplejson/tool.py +37 -37
  575. data/lib/chef/provider/package/yum/version.rb +60 -60
  576. data/lib/chef/provider/package/yum/yum_cache.rb +93 -93
  577. data/lib/chef/provider/package/yum/yum_helper.py +216 -211
  578. data/lib/chef/provider/package/zypper.rb +167 -167
  579. data/lib/chef/provider/powershell_script.rb +193 -193
  580. data/lib/chef/provider/reboot.rb +78 -78
  581. data/lib/chef/provider/registry_key.rb +199 -199
  582. data/lib/chef/provider/remote_directory.rb +269 -269
  583. data/lib/chef/provider/remote_file.rb +66 -66
  584. data/lib/chef/provider/remote_file/cache_control_data.rb +195 -195
  585. data/lib/chef/provider/remote_file/content.rb +81 -81
  586. data/lib/chef/provider/remote_file/fetcher.rb +60 -60
  587. data/lib/chef/provider/remote_file/ftp.rb +172 -172
  588. data/lib/chef/provider/remote_file/http.rb +143 -143
  589. data/lib/chef/provider/remote_file/local_file.rb +60 -60
  590. data/lib/chef/provider/remote_file/network_file.rb +61 -61
  591. data/lib/chef/provider/remote_file/sftp.rb +105 -105
  592. data/lib/chef/provider/resource_update.rb +52 -52
  593. data/lib/chef/provider/route.rb +248 -248
  594. data/lib/chef/provider/ruby_block.rb +40 -40
  595. data/lib/chef/provider/script.rb +117 -117
  596. data/lib/chef/provider/service.rb +252 -252
  597. data/lib/chef/provider/service/aix.rb +125 -125
  598. data/lib/chef/provider/service/aixinit.rb +117 -117
  599. data/lib/chef/provider/service/arch.rb +118 -118
  600. data/lib/chef/provider/service/debian.rb +193 -193
  601. data/lib/chef/provider/service/freebsd.rb +194 -194
  602. data/lib/chef/provider/service/gentoo.rb +70 -70
  603. data/lib/chef/provider/service/init.rb +93 -93
  604. data/lib/chef/provider/service/insserv.rb +61 -59
  605. data/lib/chef/provider/service/invokercd.rb +41 -41
  606. data/lib/chef/provider/service/macosx.rb +252 -252
  607. data/lib/chef/provider/service/openbsd.rb +216 -216
  608. data/lib/chef/provider/service/redhat.rb +126 -126
  609. data/lib/chef/provider/service/simple.rb +172 -172
  610. data/lib/chef/provider/service/solaris.rb +127 -127
  611. data/lib/chef/provider/service/systemd.rb +190 -189
  612. data/lib/chef/provider/service/upstart.rb +260 -260
  613. data/lib/chef/provider/service/windows.rb +485 -485
  614. data/lib/chef/provider/subversion.rb +227 -227
  615. data/lib/chef/provider/support/yum_repo.erb +138 -138
  616. data/lib/chef/provider/support/zypper_repo.erb +17 -17
  617. data/lib/chef/provider/systemd_unit.rb +261 -261
  618. data/lib/chef/provider/template.rb +59 -59
  619. data/lib/chef/provider/template/content.rb +93 -93
  620. data/lib/chef/provider/template_finder.rb +62 -62
  621. data/lib/chef/provider/user.rb +221 -221
  622. data/lib/chef/provider/user/aix.rb +131 -131
  623. data/lib/chef/provider/user/dscl.rb +632 -632
  624. data/lib/chef/provider/user/linux.rb +116 -116
  625. data/lib/chef/provider/user/pw.rb +105 -105
  626. data/lib/chef/provider/user/solaris.rb +160 -160
  627. data/lib/chef/provider/user/windows.rb +124 -124
  628. data/lib/chef/provider/whyrun_safe_ruby_block.rb +32 -32
  629. data/lib/chef/provider/windows_env.rb +207 -207
  630. data/lib/chef/provider/windows_path.rb +61 -61
  631. data/lib/chef/provider/windows_script.rb +75 -75
  632. data/lib/chef/provider/windows_task.rb +634 -634
  633. data/lib/chef/provider/yum_repository.rb +130 -130
  634. data/lib/chef/provider/zypper_repository.rb +170 -169
  635. data/lib/chef/provider_resolver.rb +146 -146
  636. data/lib/chef/providers.rb +147 -147
  637. data/lib/chef/recipe.rb +95 -95
  638. data/lib/chef/request_id.rb +37 -37
  639. data/lib/chef/reserved_names.rb +9 -9
  640. data/lib/chef/resource.rb +1592 -1592
  641. data/lib/chef/resource/.DS_Store +0 -0
  642. data/lib/chef/resource/action_class.rb +90 -90
  643. data/lib/chef/resource/apt_package.rb +49 -48
  644. data/lib/chef/resource/apt_preference.rb +52 -52
  645. data/lib/chef/resource/apt_repository.rb +86 -86
  646. data/lib/chef/resource/apt_update.rb +41 -41
  647. data/lib/chef/resource/archive_file.rb +172 -172
  648. data/lib/chef/resource/bash.rb +34 -34
  649. data/lib/chef/resource/batch.rb +34 -34
  650. data/lib/chef/resource/bff_package.rb +31 -31
  651. data/lib/chef/resource/breakpoint.rb +48 -48
  652. data/lib/chef/resource/build_essential.rb +143 -143
  653. data/lib/chef/resource/cab_package.rb +45 -45
  654. data/lib/chef/resource/chef_gem.rb +62 -62
  655. data/lib/chef/resource/chef_handler.rb +136 -135
  656. data/lib/chef/resource/chocolatey_config.rb +82 -82
  657. data/lib/chef/resource/chocolatey_feature.rb +80 -0
  658. data/lib/chef/resource/chocolatey_package.rb +50 -50
  659. data/lib/chef/resource/chocolatey_source.rb +129 -94
  660. data/lib/chef/resource/conditional.rb +135 -135
  661. data/lib/chef/resource/conditional_action_not_nothing.rb +48 -48
  662. data/lib/chef/resource/cookbook_file.rb +46 -46
  663. data/lib/chef/resource/cron.rb +174 -174
  664. data/lib/chef/resource/cron_access.rb +69 -69
  665. data/lib/chef/resource/cron_d.rb +238 -237
  666. data/lib/chef/resource/csh.rb +39 -39
  667. data/lib/chef/resource/directory.rb +51 -51
  668. data/lib/chef/resource/dmg_package.rb +171 -171
  669. data/lib/chef/resource/dnf_package.rb +80 -80
  670. data/lib/chef/resource/dpkg_package.rb +41 -41
  671. data/lib/chef/resource/dsc_resource.rb +121 -120
  672. data/lib/chef/resource/dsc_script.rb +125 -124
  673. data/lib/chef/resource/execute.rb +200 -200
  674. data/lib/chef/resource/file.rb +106 -106
  675. data/lib/chef/resource/file/.DS_Store +0 -0
  676. data/lib/chef/resource/file/verification.rb +139 -139
  677. data/lib/chef/resource/file/verification/systemd_unit.rb +67 -67
  678. data/lib/chef/resource/freebsd_package.rb +55 -55
  679. data/lib/chef/resource/gem_package.rb +59 -59
  680. data/lib/chef/resource/git.rb +35 -35
  681. data/lib/chef/resource/group.rb +61 -61
  682. data/lib/chef/resource/homebrew_cask.rb +103 -103
  683. data/lib/chef/resource/homebrew_package.rb +39 -39
  684. data/lib/chef/resource/homebrew_tap.rb +90 -90
  685. data/lib/chef/resource/hostname.rb +267 -267
  686. data/lib/chef/resource/http_request.rb +55 -55
  687. data/lib/chef/resource/ifconfig.rb +105 -105
  688. data/lib/chef/resource/ips_package.rb +38 -38
  689. data/lib/chef/resource/kernel_module.rb +134 -134
  690. data/lib/chef/resource/ksh.rb +39 -39
  691. data/lib/chef/resource/launchd.rb +256 -252
  692. data/lib/chef/resource/link.rb +92 -92
  693. data/lib/chef/resource/locale.rb +150 -149
  694. data/lib/chef/resource/log.rb +53 -52
  695. data/lib/chef/resource/lwrp_base.rb +123 -123
  696. data/lib/chef/resource/macos_userdefaults.rb +132 -132
  697. data/lib/chef/resource/macosx_service.rb +37 -37
  698. data/lib/chef/resource/macports_package.rb +29 -29
  699. data/lib/chef/resource/mdadm.rb +67 -67
  700. data/lib/chef/resource/mount.rb +96 -96
  701. data/lib/chef/resource/msu_package.rb +49 -49
  702. data/lib/chef/resource/ohai.rb +38 -38
  703. data/lib/chef/resource/ohai_hint.rb +97 -97
  704. data/lib/chef/resource/openbsd_package.rb +38 -38
  705. data/lib/chef/resource/openssl_dhparam.rb +77 -77
  706. data/lib/chef/resource/openssl_ec_private_key.rb +92 -92
  707. data/lib/chef/resource/openssl_ec_public_key.rb +74 -74
  708. data/lib/chef/resource/openssl_rsa_private_key.rb +91 -91
  709. data/lib/chef/resource/openssl_rsa_public_key.rb +74 -74
  710. data/lib/chef/resource/openssl_x509_certificate.rb +220 -220
  711. data/lib/chef/resource/openssl_x509_crl.rb +131 -131
  712. data/lib/chef/resource/openssl_x509_request.rb +150 -150
  713. data/lib/chef/resource/osx_profile.rb +48 -48
  714. data/lib/chef/resource/package.rb +65 -65
  715. data/lib/chef/resource/pacman_package.rb +30 -30
  716. data/lib/chef/resource/paludis_package.rb +38 -38
  717. data/lib/chef/resource/perl.rb +38 -38
  718. data/lib/chef/resource/portage_package.rb +33 -33
  719. data/lib/chef/resource/powershell_package.rb +52 -52
  720. data/lib/chef/resource/powershell_package_source.rb +168 -168
  721. data/lib/chef/resource/powershell_script.rb +95 -95
  722. data/lib/chef/resource/python.rb +36 -36
  723. data/lib/chef/resource/reboot.rb +47 -46
  724. data/lib/chef/resource/registry_key.rb +130 -130
  725. data/lib/chef/resource/remote_directory.rb +84 -84
  726. data/lib/chef/resource/remote_file.rb +181 -181
  727. data/lib/chef/resource/resource_notification.rb +139 -139
  728. data/lib/chef/resource/rhsm_errata.rb +46 -46
  729. data/lib/chef/resource/rhsm_errata_level.rb +51 -51
  730. data/lib/chef/resource/rhsm_register.rb +168 -168
  731. data/lib/chef/resource/rhsm_repo.rb +65 -65
  732. data/lib/chef/resource/rhsm_subscription.rb +98 -98
  733. data/lib/chef/resource/route.rb +56 -56
  734. data/lib/chef/resource/rpm_package.rb +33 -33
  735. data/lib/chef/resource/ruby.rb +37 -37
  736. data/lib/chef/resource/ruby_block.rb +48 -46
  737. data/lib/chef/resource/scm.rb +75 -75
  738. data/lib/chef/resource/script.rb +54 -54
  739. data/lib/chef/resource/service.rb +126 -125
  740. data/lib/chef/resource/smartos_package.rb +31 -31
  741. data/lib/chef/resource/snap_package.rb +36 -36
  742. data/lib/chef/resource/solaris_package.rb +33 -33
  743. data/lib/chef/resource/ssh_known_hosts_entry.rb +146 -145
  744. data/lib/chef/resource/subversion.rb +56 -56
  745. data/lib/chef/resource/sudo.rb +230 -230
  746. data/lib/chef/resource/support/cron.d.erb +28 -28
  747. data/lib/chef/resource/support/cron_access.erb +4 -4
  748. data/lib/chef/resource/support/ssh_known_hosts.erb +3 -3
  749. data/lib/chef/resource/support/sudoer.erb +18 -18
  750. data/lib/chef/resource/swap_file.rb +209 -209
  751. data/lib/chef/resource/sysctl.rb +151 -151
  752. data/lib/chef/resource/systemd_unit.rb +87 -86
  753. data/lib/chef/resource/template.rb +212 -212
  754. data/lib/chef/resource/timezone.rb +134 -134
  755. data/lib/chef/resource/user.rb +77 -77
  756. data/lib/chef/resource/user/aix_user.rb +31 -31
  757. data/lib/chef/resource/user/dscl_user.rb +35 -35
  758. data/lib/chef/resource/user/linux_user.rb +32 -32
  759. data/lib/chef/resource/user/pw_user.rb +31 -31
  760. data/lib/chef/resource/user/solaris_user.rb +31 -31
  761. data/lib/chef/resource/user/windows_user.rb +35 -35
  762. data/lib/chef/resource/whyrun_safe_ruby_block.rb +24 -24
  763. data/lib/chef/resource/windows_ad_join.rb +121 -120
  764. data/lib/chef/resource/windows_auto_run.rb +87 -87
  765. data/lib/chef/resource/windows_certificate.rb +332 -332
  766. data/lib/chef/resource/windows_dfs_folder.rb +75 -75
  767. data/lib/chef/resource/windows_dfs_namespace.rb +114 -114
  768. data/lib/chef/resource/windows_dfs_server.rb +76 -76
  769. data/lib/chef/resource/windows_dns_record.rb +76 -76
  770. data/lib/chef/resource/windows_dns_zone.rb +80 -80
  771. data/lib/chef/resource/windows_env.rb +49 -49
  772. data/lib/chef/resource/windows_feature.rb +90 -90
  773. data/lib/chef/resource/windows_feature_dism.rb +222 -222
  774. data/lib/chef/resource/windows_feature_powershell.rb +262 -262
  775. data/lib/chef/resource/windows_firewall_rule.rb +204 -204
  776. data/lib/chef/resource/windows_font.rb +125 -125
  777. data/lib/chef/resource/windows_package.rb +61 -61
  778. data/lib/chef/resource/windows_pagefile.rb +206 -206
  779. data/lib/chef/resource/windows_path.rb +38 -38
  780. data/lib/chef/resource/windows_printer.rb +146 -146
  781. data/lib/chef/resource/windows_printer_port.rb +136 -136
  782. data/lib/chef/resource/windows_script.rb +65 -65
  783. data/lib/chef/resource/windows_service.rb +115 -115
  784. data/lib/chef/resource/windows_share.rb +323 -323
  785. data/lib/chef/resource/windows_shortcut.rb +79 -79
  786. data/lib/chef/resource/windows_task.rb +353 -353
  787. data/lib/chef/resource/windows_uac.rb +94 -94
  788. data/lib/chef/resource/windows_workgroup.rb +113 -112
  789. data/lib/chef/resource/yum_package.rb +79 -79
  790. data/lib/chef/resource/yum_repository.rb +187 -187
  791. data/lib/chef/resource/zypper_package.rb +46 -46
  792. data/lib/chef/resource/zypper_repository.rb +103 -103
  793. data/lib/chef/resource_builder.rb +92 -92
  794. data/lib/chef/resource_collection.rb +147 -146
  795. data/lib/chef/resource_collection/resource_collection_serialization.rb +68 -68
  796. data/lib/chef/resource_collection/resource_list.rb +106 -106
  797. data/lib/chef/resource_collection/resource_set.rb +200 -200
  798. data/lib/chef/resource_collection/stepable_iterator.rb +122 -122
  799. data/lib/chef/resource_definition.rb +68 -68
  800. data/lib/chef/resource_definition_list.rb +38 -38
  801. data/lib/chef/resource_inspector.rb +108 -108
  802. data/lib/chef/resource_reporter.rb +246 -246
  803. data/lib/chef/resource_resolver.rb +160 -160
  804. data/lib/chef/resources.rb +156 -155
  805. data/lib/chef/role.rb +274 -274
  806. data/lib/chef/run_context.rb +719 -719
  807. data/lib/chef/run_context/cookbook_compiler.rb +343 -343
  808. data/lib/chef/run_list.rb +168 -168
  809. data/lib/chef/run_list/run_list_expansion.rb +236 -236
  810. data/lib/chef/run_list/run_list_item.rb +98 -98
  811. data/lib/chef/run_list/versioned_recipe_list.rb +104 -104
  812. data/lib/chef/run_lock.rb +198 -198
  813. data/lib/chef/run_status.rb +128 -128
  814. data/lib/chef/runner.rb +148 -148
  815. data/lib/chef/sandbox.rb +20 -20
  816. data/lib/chef/scan_access_control.rb +138 -138
  817. data/lib/chef/search/query.rb +182 -182
  818. data/lib/chef/server_api.rb +83 -83
  819. data/lib/chef/server_api_versions.rb +59 -59
  820. data/lib/chef/shell.rb +354 -354
  821. data/lib/chef/shell/ext.rb +594 -593
  822. data/lib/chef/shell/model_wrapper.rb +120 -120
  823. data/lib/chef/shell/shell_session.rb +311 -310
  824. data/lib/chef/train_transport.rb +126 -129
  825. data/lib/chef/user.rb +194 -194
  826. data/lib/chef/user_v1.rb +325 -325
  827. data/lib/chef/util/backup.rb +94 -94
  828. data/lib/chef/util/diff.rb +184 -184
  829. data/lib/chef/util/dsc/configuration_generator.rb +139 -139
  830. data/lib/chef/util/dsc/lcm_output_parser.rb +192 -192
  831. data/lib/chef/util/dsc/local_configuration_manager.rb +151 -151
  832. data/lib/chef/util/dsc/resource_info.rb +26 -26
  833. data/lib/chef/util/dsc/resource_store.rb +109 -109
  834. data/lib/chef/util/editor.rb +91 -91
  835. data/lib/chef/util/file_edit.rb +100 -100
  836. data/lib/chef/util/path_helper.rb +25 -25
  837. data/lib/chef/util/powershell/cmdlet.rb +173 -173
  838. data/lib/chef/util/powershell/cmdlet_result.rb +61 -61
  839. data/lib/chef/util/powershell/ps_credential.rb +41 -41
  840. data/lib/chef/util/selinux.rb +93 -93
  841. data/lib/chef/util/threaded_job_queue.rb +61 -61
  842. data/lib/chef/util/windows.rb +24 -24
  843. data/lib/chef/util/windows/logon_session.rb +129 -129
  844. data/lib/chef/util/windows/net_group.rb +78 -78
  845. data/lib/chef/util/windows/net_use.rb +81 -81
  846. data/lib/chef/util/windows/net_user.rb +172 -172
  847. data/lib/chef/util/windows/volume.rb +49 -49
  848. data/lib/chef/version.rb +36 -36
  849. data/lib/chef/version/platform.rb +62 -62
  850. data/lib/chef/version_class.rb +75 -75
  851. data/lib/chef/version_constraint.rb +118 -118
  852. data/lib/chef/version_constraint/platform.rb +28 -28
  853. data/lib/chef/version_string.rb +143 -143
  854. data/lib/chef/whitelist.rb +86 -86
  855. data/lib/chef/win32/api.rb +372 -372
  856. data/lib/chef/win32/api/crypto.rb +63 -63
  857. data/lib/chef/win32/api/error.rb +953 -953
  858. data/lib/chef/win32/api/file.rb +620 -620
  859. data/lib/chef/win32/api/installer.rb +165 -165
  860. data/lib/chef/win32/api/memory.rb +105 -105
  861. data/lib/chef/win32/api/net.rb +328 -328
  862. data/lib/chef/win32/api/process.rb +42 -42
  863. data/lib/chef/win32/api/psapi.rb +51 -51
  864. data/lib/chef/win32/api/registry.rb +51 -51
  865. data/lib/chef/win32/api/security.rb +476 -476
  866. data/lib/chef/win32/api/synchronization.rb +89 -89
  867. data/lib/chef/win32/api/system.rb +238 -238
  868. data/lib/chef/win32/api/unicode.rb +135 -135
  869. data/lib/chef/win32/crypto.rb +50 -50
  870. data/lib/chef/win32/error.rb +86 -86
  871. data/lib/chef/win32/eventlog.rb +31 -31
  872. data/lib/chef/win32/file.rb +226 -226
  873. data/lib/chef/win32/file/info.rb +99 -99
  874. data/lib/chef/win32/file/version_info.rb +93 -93
  875. data/lib/chef/win32/handle.rb +55 -55
  876. data/lib/chef/win32/memory.rb +101 -101
  877. data/lib/chef/win32/mutex.rb +116 -116
  878. data/lib/chef/win32/net.rb +326 -326
  879. data/lib/chef/win32/process.rb +97 -97
  880. data/lib/chef/win32/registry.rb +374 -374
  881. data/lib/chef/win32/security.rb +698 -698
  882. data/lib/chef/win32/security/ace.rb +123 -123
  883. data/lib/chef/win32/security/acl.rb +103 -103
  884. data/lib/chef/win32/security/securable_object.rb +109 -109
  885. data/lib/chef/win32/security/security_descriptor.rb +93 -93
  886. data/lib/chef/win32/security/sid.rb +347 -347
  887. data/lib/chef/win32/security/token.rb +72 -72
  888. data/lib/chef/win32/system.rb +62 -62
  889. data/lib/chef/win32/unicode.rb +66 -66
  890. data/lib/chef/win32/version.rb +151 -151
  891. data/lib/chef/win32_service_constants.rb +143 -143
  892. data/lib/chef/workstation_config_loader.rb +23 -23
  893. data/spec/.DS_Store +0 -0
  894. data/spec/data/.DS_Store +0 -0
  895. data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
  896. data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
  897. data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
  898. data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -34
  899. data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
  900. data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
  901. data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
  902. data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
  903. data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
  904. data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
  905. data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -34
  906. data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
  907. data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
  908. data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
  909. data/spec/data/apt/chef-integration-test2-1.0/debian/changelog +5 -5
  910. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log +45 -45
  911. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars +1 -1
  912. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles +1 -1
  913. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control +10 -10
  914. data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums +1 -1
  915. data/spec/data/apt/chef-integration-test2-1.0/debian/compat +1 -1
  916. data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +1 -1
  917. data/spec/data/apt/chef-integration-test2-1.0/debian/control +13 -13
  918. data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +34 -34
  919. data/spec/data/apt/chef-integration-test2-1.0/debian/files +1 -1
  920. data/spec/data/apt/chef-integration-test2-1.0/debian/rules +13 -13
  921. data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +1 -1
  922. data/spec/data/apt/chef-integration-test2_1.0-1.dsc +18 -18
  923. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +91 -91
  924. data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +31 -31
  925. data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
  926. data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
  927. data/spec/data/apt/var/www/apt/conf/distributions +7 -7
  928. data/spec/data/apt/var/www/apt/conf/incoming +4 -4
  929. data/spec/data/apt/var/www/apt/conf/pulls +3 -3
  930. data/spec/data/apt/var/www/apt/db/version +4 -4
  931. data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
  932. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
  933. data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
  934. data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
  935. data/spec/data/bootstrap/no_proxy.erb +2 -2
  936. data/spec/data/bootstrap/secret.erb +9 -9
  937. data/spec/data/bootstrap/test-hints.erb +12 -12
  938. data/spec/data/bootstrap/test.erb +1 -1
  939. data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
  940. data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
  941. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
  942. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
  943. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
  944. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
  945. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
  946. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
  947. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
  948. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
  949. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
  950. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
  951. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
  952. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
  953. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
  954. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
  955. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
  956. data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
  957. data/spec/data/client.d_00/00-foo.rb +2 -2
  958. data/spec/data/client.d_00/01-bar.rb +1 -1
  959. data/spec/data/client.d_00/02-strings.rb +2 -2
  960. data/spec/data/client.d_00/bar +1 -1
  961. data/spec/data/client.d_01/foo/bar.rb +1 -1
  962. data/spec/data/client.d_02/foo.rb/foo.txt +1 -1
  963. data/spec/data/config.rb +6 -6
  964. data/spec/data/cookbooks/.DS_Store +0 -0
  965. data/spec/data/cookbooks/angrybash/metadata.rb +2 -2
  966. data/spec/data/cookbooks/angrybash/recipes/default.rb +8 -8
  967. data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +2 -2
  968. data/spec/data/cookbooks/apache2/metadata.rb +2 -2
  969. data/spec/data/cookbooks/apache2/recipes/default.rb +2 -2
  970. data/spec/data/cookbooks/borken/metadata.rb +2 -2
  971. data/spec/data/cookbooks/borken/recipes/default.rb +1 -1
  972. data/spec/data/cookbooks/borken/templates/default/borken.erb +1 -1
  973. data/spec/data/cookbooks/chefignore +8 -8
  974. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -2
  975. data/spec/data/cookbooks/ignorken/metadata.rb +2 -2
  976. data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +1 -1
  977. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -2
  978. data/spec/data/cookbooks/irssi/files/default/irssi.response +2 -2
  979. data/spec/data/cookbooks/java/.DS_Store +0 -0
  980. data/spec/data/cookbooks/java/files/.DS_Store +0 -0
  981. data/spec/data/cookbooks/java/files/default/java.response +1 -1
  982. data/spec/data/cookbooks/java/metadata.rb +2 -2
  983. data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
  984. data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
  985. data/spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb +8 -8
  986. data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
  987. data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
  988. data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
  989. data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
  990. data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
  991. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
  992. data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
  993. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
  994. data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
  995. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
  996. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
  997. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
  998. data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
  999. data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
  1000. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
  1001. data/spec/data/cookbooks/openldap/metadata.rb +8 -8
  1002. data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
  1003. data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
  1004. data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
  1005. data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
  1006. data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
  1007. data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -14
  1008. data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
  1009. data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -1
  1010. data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -1
  1011. data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
  1012. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -1
  1013. data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
  1014. data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
  1015. data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
  1016. data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
  1017. data/spec/data/cookbooks/preseed/metadata.rb +2 -2
  1018. data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
  1019. data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
  1020. data/spec/data/cookbooks/supports-platform-constraints/metadata.rb +5 -5
  1021. data/spec/data/cookbooks/wget/files/default/wget.response +2 -2
  1022. data/spec/data/definitions/test.rb +4 -4
  1023. data/spec/data/environment-config.rb +4 -4
  1024. data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
  1025. data/spec/data/fileedit/hosts +4 -4
  1026. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
  1027. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
  1028. data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +8 -8
  1029. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
  1030. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +9 -9
  1031. data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +8 -8
  1032. data/spec/data/kitchen/chefignore +6 -6
  1033. data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
  1034. data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
  1035. data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
  1036. data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
  1037. data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
  1038. data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
  1039. data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
  1040. data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
  1041. data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
  1042. data/spec/data/knife_subcommand/test_yourself.rb +21 -21
  1043. data/spec/data/lwrp/providers/buck_passer.rb +28 -28
  1044. data/spec/data/lwrp/providers/buck_passer_2.rb +26 -26
  1045. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +28 -28
  1046. data/spec/data/lwrp/providers/inline_compiler.rb +24 -24
  1047. data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
  1048. data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
  1049. data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
  1050. data/spec/data/lwrp/resources/bar.rb +2 -2
  1051. data/spec/data/lwrp/resources/buck_passer.rb +5 -5
  1052. data/spec/data/lwrp/resources/buck_passer_2.rb +3 -3
  1053. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -3
  1054. data/spec/data/lwrp/resources/foo.rb +4 -4
  1055. data/spec/data/lwrp/resources/inline_compiler.rb +3 -3
  1056. data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -5
  1057. data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -3
  1058. data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -3
  1059. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +1 -1
  1060. data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
  1061. data/spec/data/lwrp_override/resources/foo.rb +10 -10
  1062. data/spec/data/mac_users/.DS_Store +0 -0
  1063. data/spec/data/mac_users/10.9.plist.xml +560 -560
  1064. data/spec/data/mac_users/10.9.shadow.xml +21 -21
  1065. data/spec/data/metadata/quick_start/metadata.rb +14 -14
  1066. data/spec/data/mixin/invalid_data.rb +3 -3
  1067. data/spec/data/mixin/real_data.rb +2 -2
  1068. data/spec/data/nested.json +2 -2
  1069. data/spec/data/nodes/Tim.local.json +3 -0
  1070. data/spec/data/nodes/Tims-MBP.local.json +3 -0
  1071. data/spec/data/nodes/default.rb +15 -15
  1072. data/spec/data/nodes/test.example.com.rb +17 -17
  1073. data/spec/data/nodes/test.rb +15 -15
  1074. data/spec/data/null_config.rb +1 -1
  1075. data/spec/data/object_loader/environments/test.json +7 -7
  1076. data/spec/data/object_loader/environments/test.rb +2 -2
  1077. data/spec/data/object_loader/environments/test_json_class.json +8 -8
  1078. data/spec/data/object_loader/nodes/test.json +7 -7
  1079. data/spec/data/object_loader/nodes/test.rb +2 -2
  1080. data/spec/data/object_loader/nodes/test_json_class.json +8 -8
  1081. data/spec/data/object_loader/roles/test.json +7 -7
  1082. data/spec/data/object_loader/roles/test.rb +2 -2
  1083. data/spec/data/object_loader/roles/test_json_class.json +8 -8
  1084. data/spec/data/partial_one.erb +1 -1
  1085. data/spec/data/prefer_metadata_json/metadata.json +51 -51
  1086. data/spec/data/prefer_metadata_json/metadata.rb +6 -6
  1087. data/spec/data/recipes/test.rb +7 -7
  1088. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -1
  1089. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -1
  1090. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -2
  1091. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -3
  1092. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -1
  1093. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -2
  1094. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -3
  1095. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -3
  1096. data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -1
  1097. data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -2
  1098. data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -3
  1099. data/spec/data/run_context/.DS_Store +0 -0
  1100. data/spec/data/run_context/cookbooks/.DS_Store +0 -0
  1101. data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +2 -2
  1102. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
  1103. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
  1104. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
  1105. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
  1106. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -1
  1107. data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +2 -2
  1108. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
  1109. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
  1110. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
  1111. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
  1112. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -1
  1113. data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -2
  1114. data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -2
  1115. data/spec/data/run_context/cookbooks/dependency1/attributes/unparsed_file +1 -1
  1116. data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +2 -2
  1117. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
  1118. data/spec/data/run_context/cookbooks/dependency1/definitions/unparsed_file +1 -1
  1119. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
  1120. data/spec/data/run_context/cookbooks/dependency1/libraries/unparsed_file +1 -1
  1121. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
  1122. data/spec/data/run_context/cookbooks/dependency1/providers/unparsed_file +1 -1
  1123. data/spec/data/run_context/cookbooks/dependency1/recipes/unparsed_file +1 -1
  1124. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -1
  1125. data/spec/data/run_context/cookbooks/dependency1/resources/unparsed_file +1 -1
  1126. data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +2 -2
  1127. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
  1128. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
  1129. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
  1130. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -1
  1131. data/spec/data/run_context/cookbooks/include/recipes/default.rb +24 -24
  1132. data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -3
  1133. data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +2 -2
  1134. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
  1135. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
  1136. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -1
  1137. data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +2 -2
  1138. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
  1139. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
  1140. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
  1141. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
  1142. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -1
  1143. data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +2 -2
  1144. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
  1145. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
  1146. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
  1147. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
  1148. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -1
  1149. data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
  1150. data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +9 -9
  1151. data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +5 -5
  1152. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -1
  1153. data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -1
  1154. data/spec/data/run_context/cookbooks/test/recipes/default.rb +5 -5
  1155. data/spec/data/run_context/cookbooks/test/recipes/one.rb +7 -7
  1156. data/spec/data/run_context/cookbooks/test/recipes/two.rb +7 -7
  1157. data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -1
  1158. data/spec/data/run_context/nodes/run_context.rb +5 -5
  1159. data/spec/data/sample_msu1.xml +10 -10
  1160. data/spec/data/sample_msu2.xml +14 -14
  1161. data/spec/data/sample_msu3.xml +16 -16
  1162. data/spec/data/search_queries_to_transform.txt +98 -98
  1163. data/spec/data/shef-config.rb +11 -11
  1164. data/spec/data/snap_package/async_result_success.json +6 -6
  1165. data/spec/data/snap_package/change_id_result.json +175 -175
  1166. data/spec/data/snap_package/find_result_failure.json +10 -10
  1167. data/spec/data/snap_package/find_result_success.json +70 -70
  1168. data/spec/data/snap_package/get_by_name_result_failure.json +10 -10
  1169. data/spec/data/snap_package/get_by_name_result_success.json +38 -38
  1170. data/spec/data/snap_package/get_conf_success.json +10 -10
  1171. data/spec/data/snap_package/result_failure.json +9 -9
  1172. data/spec/data/ssl/5e707473.0 +18 -18
  1173. data/spec/data/ssl/chef-rspec.cert +27 -27
  1174. data/spec/data/ssl/chef-rspec.key +27 -27
  1175. data/spec/data/ssl/key.pem +15 -15
  1176. data/spec/data/ssl/private_key.pem +27 -27
  1177. data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
  1178. data/spec/data/standalone_cookbook/chefignore +9 -9
  1179. data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
  1180. data/spec/data/templates/failed.erb +5 -0
  1181. data/spec/data/trusted_certs/example.crt +22 -22
  1182. data/spec/data/trusted_certs/example_no_cn.crt +36 -36
  1183. data/spec/data/trusted_certs/intermediate.pem +27 -27
  1184. data/spec/data/trusted_certs/opscode.pem +57 -57
  1185. data/spec/data/trusted_certs/root.pem +22 -22
  1186. data/spec/data/trusted_certs_empty/README.md +1 -1
  1187. data/spec/data/windows_certificates/base64_test.cer +22 -22
  1188. data/spec/data/windows_certificates/test.pem +21 -21
  1189. data/spec/functional/.DS_Store +0 -0
  1190. data/spec/functional/application_spec.rb +58 -58
  1191. data/spec/functional/assets/chefinittest +36 -36
  1192. data/spec/functional/assets/inittest +36 -0
  1193. data/spec/functional/assets/testchefsubsys +10 -10
  1194. data/spec/functional/assets/yumrepo/repodata/repomd.xml +21 -21
  1195. data/spec/functional/dsl/reboot_pending_spec.rb +87 -87
  1196. data/spec/functional/dsl/registry_helper_spec.rb +61 -61
  1197. data/spec/functional/event_loggers/windows_eventlog_spec.rb +104 -104
  1198. data/spec/functional/file_content_management/deploy_strategies_spec.rb +229 -229
  1199. data/spec/functional/http/simple_spec.rb +146 -146
  1200. data/spec/functional/knife/configure_spec.rb +33 -33
  1201. data/spec/functional/knife/cookbook_delete_spec.rb +156 -156
  1202. data/spec/functional/knife/exec_spec.rb +55 -55
  1203. data/spec/functional/knife/rehash_spec.rb +39 -39
  1204. data/spec/functional/knife/smoke_test.rb +42 -42
  1205. data/spec/functional/knife/ssh_spec.rb +359 -359
  1206. data/spec/functional/mixin/from_file_spec.rb +93 -82
  1207. data/spec/functional/mixin/powershell_out_spec.rb +43 -43
  1208. data/spec/functional/mixin/shell_out_spec.rb +48 -48
  1209. data/spec/functional/mixin/user_context_spec.rb +117 -117
  1210. data/spec/functional/notifications_spec.rb +238 -238
  1211. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +100 -100
  1212. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +51 -51
  1213. data/spec/functional/rebooter_spec.rb +117 -117
  1214. data/spec/functional/resource/.DS_Store +0 -0
  1215. data/spec/functional/resource/aix_service_spec.rb +138 -138
  1216. data/spec/functional/resource/aixinit_service_spec.rb +211 -211
  1217. data/spec/functional/resource/apt_package_spec.rb +386 -386
  1218. data/spec/functional/resource/base.rb +28 -28
  1219. data/spec/functional/resource/bash_spec.rb +54 -54
  1220. data/spec/functional/resource/batch_spec.rb +34 -34
  1221. data/spec/functional/resource/bff_spec.rb +120 -120
  1222. data/spec/functional/resource/chocolatey_package_spec.rb +118 -118
  1223. data/spec/functional/resource/cookbook_file_spec.rb +81 -81
  1224. data/spec/functional/resource/cron_spec.rb +179 -179
  1225. data/spec/functional/resource/directory_spec.rb +43 -43
  1226. data/spec/functional/resource/dnf_package_spec.rb +686 -686
  1227. data/spec/functional/resource/dpkg_package_spec.rb +339 -339
  1228. data/spec/functional/resource/dsc_resource_spec.rb +90 -90
  1229. data/spec/functional/resource/dsc_script_spec.rb +484 -484
  1230. data/spec/functional/resource/execute_spec.rb +171 -171
  1231. data/spec/functional/resource/file_spec.rb +167 -167
  1232. data/spec/functional/resource/git_spec.rb +257 -257
  1233. data/spec/functional/resource/group_spec.rb +464 -464
  1234. data/spec/functional/resource/ifconfig_spec.rb +172 -172
  1235. data/spec/functional/resource/insserv_spec.rb +206 -0
  1236. data/spec/functional/resource/link_spec.rb +699 -699
  1237. data/spec/functional/resource/locale_spec.rb +97 -97
  1238. data/spec/functional/resource/mount_spec.rb +207 -207
  1239. data/spec/functional/resource/msu_package_spec.rb +98 -98
  1240. data/spec/functional/resource/ohai_spec.rb +62 -62
  1241. data/spec/functional/resource/powershell_script_spec.rb +605 -605
  1242. data/spec/functional/resource/reboot_spec.rb +103 -103
  1243. data/spec/functional/resource/registry_spec.rb +676 -676
  1244. data/spec/functional/resource/remote_directory_spec.rb +220 -220
  1245. data/spec/functional/resource/remote_file_spec.rb +424 -424
  1246. data/spec/functional/resource/rpm_spec.rb +120 -120
  1247. data/spec/functional/resource/template_spec.rb +245 -245
  1248. data/spec/functional/resource/timezone_spec.rb +39 -39
  1249. data/spec/functional/resource/user/dscl_spec.rb +188 -188
  1250. data/spec/functional/resource/user/windows_spec.rb +245 -245
  1251. data/spec/functional/resource/windows_certificate_spec.rb +492 -492
  1252. data/spec/functional/resource/windows_env_spec.rb +285 -285
  1253. data/spec/functional/resource/windows_package_spec.rb +168 -168
  1254. data/spec/functional/resource/windows_path_spec.rb +64 -64
  1255. data/spec/functional/resource/windows_service_spec.rb +102 -102
  1256. data/spec/functional/resource/windows_task_spec.rb +1969 -1969
  1257. data/spec/functional/resource/yum_package_spec.rb +978 -978
  1258. data/spec/functional/resource/zypper_package_spec.rb +233 -233
  1259. data/spec/functional/root_alias_spec.rb +78 -78
  1260. data/spec/functional/run_lock_spec.rb +473 -473
  1261. data/spec/functional/shell_spec.rb +145 -145
  1262. data/spec/functional/tiny_server_spec.rb +79 -79
  1263. data/spec/functional/util/.DS_Store +0 -0
  1264. data/spec/functional/util/path_helper_spec.rb +37 -37
  1265. data/spec/functional/util/powershell/cmdlet_spec.rb +111 -111
  1266. data/spec/functional/version_spec.rb +36 -35
  1267. data/spec/functional/win32/crypto_spec.rb +54 -54
  1268. data/spec/functional/win32/registry_spec.rb +624 -624
  1269. data/spec/functional/win32/security_spec.rb +206 -206
  1270. data/spec/functional/win32/service_manager_spec.rb +220 -220
  1271. data/spec/functional/win32/sid_spec.rb +55 -55
  1272. data/spec/functional/win32/version_info_spec.rb +50 -50
  1273. data/spec/functional/win32/versions_spec.rb +115 -115
  1274. data/spec/integration/.DS_Store +0 -0
  1275. data/spec/integration/client/client_spec.rb +722 -721
  1276. data/spec/integration/client/exit_code_spec.rb +114 -114
  1277. data/spec/integration/client/ipv6_spec.rb +134 -134
  1278. data/spec/integration/knife/chef_fs_data_store_spec.rb +556 -556
  1279. data/spec/integration/knife/chef_repo_path_spec.rb +959 -959
  1280. data/spec/integration/knife/chef_repository_file_system_spec.rb +199 -199
  1281. data/spec/integration/knife/chefignore_spec.rb +300 -300
  1282. data/spec/integration/knife/client_bulk_delete_spec.rb +130 -130
  1283. data/spec/integration/knife/client_create_spec.rb +69 -69
  1284. data/spec/integration/knife/client_delete_spec.rb +63 -63
  1285. data/spec/integration/knife/client_key_create_spec.rb +65 -65
  1286. data/spec/integration/knife/client_key_delete_spec.rb +42 -42
  1287. data/spec/integration/knife/client_key_list_spec.rb +60 -60
  1288. data/spec/integration/knife/client_key_show_spec.rb +44 -44
  1289. data/spec/integration/knife/client_list_spec.rb +48 -48
  1290. data/spec/integration/knife/client_show_spec.rb +36 -36
  1291. data/spec/integration/knife/common_options_spec.rb +173 -173
  1292. data/spec/integration/knife/config_get_profile_spec.rb +112 -112
  1293. data/spec/integration/knife/config_get_spec.rb +183 -183
  1294. data/spec/integration/knife/config_list_profiles_spec.rb +188 -188
  1295. data/spec/integration/knife/config_use_profile_spec.rb +100 -100
  1296. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +112 -112
  1297. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +64 -64
  1298. data/spec/integration/knife/cookbook_download_spec.rb +71 -71
  1299. data/spec/integration/knife/cookbook_list_spec.rb +54 -54
  1300. data/spec/integration/knife/cookbook_show_spec.rb +146 -146
  1301. data/spec/integration/knife/cookbook_upload_spec.rb +90 -90
  1302. data/spec/integration/knife/data_bag_create_spec.rb +124 -124
  1303. data/spec/integration/knife/data_bag_delete_spec.rb +58 -58
  1304. data/spec/integration/knife/data_bag_edit_spec.rb +104 -104
  1305. data/spec/integration/knife/data_bag_from_file_spec.rb +115 -115
  1306. data/spec/integration/knife/data_bag_list_spec.rb +43 -43
  1307. data/spec/integration/knife/data_bag_show_spec.rb +94 -94
  1308. data/spec/integration/knife/delete_spec.rb +1017 -1017
  1309. data/spec/integration/knife/deps_spec.rb +702 -702
  1310. data/spec/integration/knife/diff_spec.rb +602 -602
  1311. data/spec/integration/knife/download_spec.rb +1333 -1333
  1312. data/spec/integration/knife/environment_compare_spec.rb +74 -74
  1313. data/spec/integration/knife/environment_create_spec.rb +40 -40
  1314. data/spec/integration/knife/environment_delete_spec.rb +36 -36
  1315. data/spec/integration/knife/environment_from_file_spec.rb +115 -115
  1316. data/spec/integration/knife/environment_list_spec.rb +41 -41
  1317. data/spec/integration/knife/environment_show_spec.rb +76 -76
  1318. data/spec/integration/knife/list_spec.rb +1059 -1059
  1319. data/spec/integration/knife/node_bulk_delete_spec.rb +51 -51
  1320. data/spec/integration/knife/node_create_spec.rb +46 -46
  1321. data/spec/integration/knife/node_delete_spec.rb +47 -47
  1322. data/spec/integration/knife/node_environment_set_spec.rb +45 -45
  1323. data/spec/integration/knife/node_from_file_spec.rb +58 -58
  1324. data/spec/integration/knife/node_list_spec.rb +44 -44
  1325. data/spec/integration/knife/node_run_list_add_spec.rb +53 -53
  1326. data/spec/integration/knife/node_run_list_remove_spec.rb +35 -35
  1327. data/spec/integration/knife/node_run_list_set_spec.rb +40 -40
  1328. data/spec/integration/knife/node_show_spec.rb +35 -35
  1329. data/spec/integration/knife/raw_spec.rb +248 -248
  1330. data/spec/integration/knife/redirection_spec.rb +54 -54
  1331. data/spec/integration/knife/role_bulk_delete_spec.rb +51 -51
  1332. data/spec/integration/knife/role_create_spec.rb +40 -40
  1333. data/spec/integration/knife/role_delete_spec.rb +47 -47
  1334. data/spec/integration/knife/role_from_file_spec.rb +95 -95
  1335. data/spec/integration/knife/role_list_spec.rb +44 -44
  1336. data/spec/integration/knife/role_show_spec.rb +50 -50
  1337. data/spec/integration/knife/search_node_spec.rb +39 -39
  1338. data/spec/integration/knife/serve_spec.rb +93 -93
  1339. data/spec/integration/knife/show_spec.rb +167 -167
  1340. data/spec/integration/knife/upload_spec.rb +1540 -1540
  1341. data/spec/integration/recipes/accumulator_spec.rb +232 -232
  1342. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +171 -171
  1343. data/spec/integration/recipes/lwrp_spec.rb +53 -53
  1344. data/spec/integration/recipes/noop_resource_spec.rb +24 -24
  1345. data/spec/integration/recipes/notifies_spec.rb +394 -394
  1346. data/spec/integration/recipes/notifying_block_spec.rb +111 -111
  1347. data/spec/integration/recipes/provider_choice.rb +37 -37
  1348. data/spec/integration/recipes/recipe_dsl_spec.rb +1373 -1373
  1349. data/spec/integration/recipes/remote_directory.rb +74 -74
  1350. data/spec/integration/recipes/resource_action_spec.rb +504 -504
  1351. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +552 -552
  1352. data/spec/integration/recipes/resource_load_spec.rb +192 -192
  1353. data/spec/integration/solo/solo_spec.rb +218 -217
  1354. data/spec/rcov.opts +2 -2
  1355. data/spec/scripts/ssl-serve.rb +47 -47
  1356. data/spec/spec_helper.rb +327 -326
  1357. data/spec/stress/.DS_Store +0 -0
  1358. data/spec/stress/win32/file_spec.rb +37 -37
  1359. data/spec/stress/win32/memory_spec.rb +22 -22
  1360. data/spec/stress/win32/security_spec.rb +69 -69
  1361. data/spec/support/.DS_Store +0 -0
  1362. data/spec/support/chef_helpers.rb +114 -114
  1363. data/spec/support/key_helpers.rb +104 -104
  1364. data/spec/support/lib/chef/provider/easy.rb +35 -35
  1365. data/spec/support/lib/chef/provider/openldap_includer.rb +29 -29
  1366. data/spec/support/lib/chef/provider/snakeoil.rb +42 -42
  1367. data/spec/support/lib/chef/resource/cat.rb +39 -39
  1368. data/spec/support/lib/chef/resource/one_two_three_four.rb +36 -36
  1369. data/spec/support/lib/chef/resource/openldap_includer.rb +28 -28
  1370. data/spec/support/lib/chef/resource/with_state.rb +30 -30
  1371. data/spec/support/lib/chef/resource/zen_follower.rb +35 -35
  1372. data/spec/support/lib/chef/resource/zen_master.rb +40 -40
  1373. data/spec/support/lib/library_load_order.rb +20 -20
  1374. data/spec/support/matchers/leak.rb +98 -98
  1375. data/spec/support/mock/constant.rb +52 -52
  1376. data/spec/support/mock/platform.rb +25 -25
  1377. data/spec/support/platform_helpers.rb +255 -251
  1378. data/spec/support/platforms/prof/gc.rb +51 -51
  1379. data/spec/support/platforms/prof/win32.rb +45 -45
  1380. data/spec/support/platforms/win32/spec_service.rb +59 -59
  1381. data/spec/support/shared/context/config.rb +21 -21
  1382. data/spec/support/shared/context/win32.rb +34 -34
  1383. data/spec/support/shared/functional/diff_disabled.rb +10 -10
  1384. data/spec/support/shared/functional/directory_resource.rb +178 -178
  1385. data/spec/support/shared/functional/execute_resource.rb +150 -150
  1386. data/spec/support/shared/functional/file_resource.rb +1050 -1050
  1387. data/spec/support/shared/functional/http.rb +248 -248
  1388. data/spec/support/shared/functional/knife.rb +37 -37
  1389. data/spec/support/shared/functional/securable_resource.rb +578 -578
  1390. data/spec/support/shared/functional/securable_resource_with_reporting.rb +394 -394
  1391. data/spec/support/shared/functional/win32_service.rb +57 -57
  1392. data/spec/support/shared/functional/windows_script.rb +272 -272
  1393. data/spec/support/shared/integration/app_server_support.rb +40 -40
  1394. data/spec/support/shared/integration/integration_helper.rb +154 -154
  1395. data/spec/support/shared/integration/knife_support.rb +196 -196
  1396. data/spec/support/shared/matchers/exit_with_code.rb +32 -32
  1397. data/spec/support/shared/matchers/match_environment_variable.rb +17 -17
  1398. data/spec/support/shared/shared_examples.rb +14 -14
  1399. data/spec/support/shared/unit/api_error_inspector.rb +190 -190
  1400. data/spec/support/shared/unit/api_versioning.rb +77 -77
  1401. data/spec/support/shared/unit/application_dot_d.rb +75 -75
  1402. data/spec/support/shared/unit/execute_resource.rb +168 -168
  1403. data/spec/support/shared/unit/file_system_support.rb +69 -69
  1404. data/spec/support/shared/unit/knife_shared.rb +39 -39
  1405. data/spec/support/shared/unit/mock_shellout.rb +49 -49
  1406. data/spec/support/shared/unit/platform_introspector.rb +189 -189
  1407. data/spec/support/shared/unit/provider/file.rb +854 -854
  1408. data/spec/support/shared/unit/provider/package/package_shared.rb +95 -95
  1409. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +402 -402
  1410. data/spec/support/shared/unit/resource/static_provider_resolution.rb +63 -63
  1411. data/spec/support/shared/unit/script_resource.rb +90 -90
  1412. data/spec/support/shared/unit/user_and_client_shared.rb +114 -114
  1413. data/spec/support/shared/unit/windows_script_resource.rb +80 -80
  1414. data/spec/tiny_server.rb +191 -191
  1415. data/spec/unit/.DS_Store +0 -0
  1416. data/spec/unit/action_collection_spec.rb +19 -19
  1417. data/spec/unit/api_client/registration_spec.rb +278 -278
  1418. data/spec/unit/api_client_spec.rb +341 -341
  1419. data/spec/unit/api_client_v1_spec.rb +455 -455
  1420. data/spec/unit/application/apply_spec.rb +113 -113
  1421. data/spec/unit/application/client_spec.rb +595 -595
  1422. data/spec/unit/application/exit_code_spec.rb +134 -134
  1423. data/spec/unit/application/knife_spec.rb +225 -225
  1424. data/spec/unit/application/solo_spec.rb +221 -220
  1425. data/spec/unit/application_spec.rb +581 -493
  1426. data/spec/unit/chef_class_spec.rb +240 -240
  1427. data/spec/unit/chef_fs/config_spec.rb +235 -235
  1428. data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +82 -82
  1429. data/spec/unit/chef_fs/data_handler/data_handler_base_spec.rb +65 -65
  1430. data/spec/unit/chef_fs/data_handler/group_handler_spec.rb +63 -63
  1431. data/spec/unit/chef_fs/diff_spec.rb +328 -328
  1432. data/spec/unit/chef_fs/file_pattern_spec.rb +512 -512
  1433. data/spec/unit/chef_fs/file_system/cookbook_subdir_spec.rb +34 -34
  1434. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +47 -47
  1435. data/spec/unit/chef_fs/file_system/repository/base_file_spec.rb +126 -126
  1436. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +175 -175
  1437. data/spec/unit/chef_fs/file_system_spec.rb +148 -148
  1438. data/spec/unit/chef_fs/parallelizer.rb +475 -475
  1439. data/spec/unit/chef_fs/path_util_spec.rb +108 -108
  1440. data/spec/unit/chef_spec.rb +25 -25
  1441. data/spec/unit/client_spec.rb +785 -785
  1442. data/spec/unit/config_fetcher_spec.rb +125 -125
  1443. data/spec/unit/config_spec.rb +31 -31
  1444. data/spec/unit/cookbook/chefignore_spec.rb +49 -49
  1445. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +210 -210
  1446. data/spec/unit/cookbook/file_vendor_spec.rb +123 -123
  1447. data/spec/unit/cookbook/gem_installer_spec.rb +92 -92
  1448. data/spec/unit/cookbook/manifest_v0_spec.rb +133 -133
  1449. data/spec/unit/cookbook/manifest_v2_spec.rb +70 -70
  1450. data/spec/unit/cookbook/metadata_spec.rb +600 -600
  1451. data/spec/unit/cookbook/synchronizer_spec.rb +558 -557
  1452. data/spec/unit/cookbook/syntax_check_spec.rb +226 -226
  1453. data/spec/unit/cookbook_loader_spec.rb +265 -265
  1454. data/spec/unit/cookbook_manifest_spec.rb +228 -228
  1455. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +199 -199
  1456. data/spec/unit/cookbook_spec.rb +62 -62
  1457. data/spec/unit/cookbook_uploader_spec.rb +199 -199
  1458. data/spec/unit/cookbook_version_file_specificity_spec.rb +623 -623
  1459. data/spec/unit/cookbook_version_spec.rb +250 -250
  1460. data/spec/unit/daemon_spec.rb +183 -183
  1461. data/spec/unit/data_bag_item_spec.rb +392 -392
  1462. data/spec/unit/data_bag_spec.rb +260 -260
  1463. data/spec/unit/data_collector_spec.rb +882 -882
  1464. data/spec/unit/decorator/lazy_array_spec.rb +58 -58
  1465. data/spec/unit/decorator/lazy_spec.rb +39 -39
  1466. data/spec/unit/decorator_spec.rb +142 -142
  1467. data/spec/unit/deprecated_spec.rb +65 -65
  1468. data/spec/unit/deprecation_spec.rb +129 -129
  1469. data/spec/unit/digester_spec.rb +49 -49
  1470. data/spec/unit/dsl/data_query_spec.rb +107 -107
  1471. data/spec/unit/dsl/declare_resource_spec.rb +374 -374
  1472. data/spec/unit/dsl/platform_introspection_spec.rb +129 -129
  1473. data/spec/unit/dsl/reboot_pending_spec.rb +87 -87
  1474. data/spec/unit/dsl/recipe_spec.rb +76 -76
  1475. data/spec/unit/dsl/registry_helper_spec.rb +52 -52
  1476. data/spec/unit/dsl/resources_spec.rb +85 -85
  1477. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +96 -96
  1478. data/spec/unit/encrypted_data_bag_item_spec.rb +438 -438
  1479. data/spec/unit/environment_spec.rb +472 -470
  1480. data/spec/unit/event_dispatch/dispatcher_spec.rb +169 -169
  1481. data/spec/unit/event_dispatch/dsl_spec.rb +83 -83
  1482. data/spec/unit/exceptions_spec.rb +132 -132
  1483. data/spec/unit/file_access_control_spec.rb +308 -308
  1484. data/spec/unit/file_cache_spec.rb +114 -114
  1485. data/spec/unit/file_content_management/deploy/cp_spec.rb +44 -44
  1486. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +113 -113
  1487. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +232 -232
  1488. data/spec/unit/file_content_management/tempfile_spec.rb +115 -115
  1489. data/spec/unit/formatters/base_spec.rb +100 -100
  1490. data/spec/unit/formatters/doc_spec.rb +92 -92
  1491. data/spec/unit/formatters/error_description_spec.rb +141 -141
  1492. data/spec/unit/formatters/error_inspectors/api_error_formatting_spec.rb +76 -76
  1493. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +265 -265
  1494. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +126 -126
  1495. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +43 -43
  1496. data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +26 -26
  1497. data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +26 -26
  1498. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +191 -191
  1499. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +91 -91
  1500. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +155 -155
  1501. data/spec/unit/guard_interpreter_spec.rb +41 -41
  1502. data/spec/unit/handler/json_file_spec.rb +63 -63
  1503. data/spec/unit/handler_spec.rb +302 -302
  1504. data/spec/unit/http/api_versions_spec.rb +82 -82
  1505. data/spec/unit/http/authenticator_spec.rb +125 -125
  1506. data/spec/unit/http/basic_client_spec.rb +72 -72
  1507. data/spec/unit/http/http_request_spec.rb +97 -97
  1508. data/spec/unit/http/json_input_spec.rb +128 -128
  1509. data/spec/unit/http/simple_spec.rb +32 -32
  1510. data/spec/unit/http/socketless_chef_zero_client_spec.rb +174 -174
  1511. data/spec/unit/http/ssl_policies_spec.rb +169 -169
  1512. data/spec/unit/http/validate_content_length_spec.rb +207 -207
  1513. data/spec/unit/http_spec.rb +229 -229
  1514. data/spec/unit/json_compat_spec.rb +73 -73
  1515. data/spec/unit/key_spec.rb +631 -631
  1516. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +152 -152
  1517. data/spec/unit/knife/bootstrap/client_builder_spec.rb +207 -207
  1518. data/spec/unit/knife/bootstrap/train_connector_spec.rb +226 -216
  1519. data/spec/unit/knife/bootstrap_spec.rb +2167 -2197
  1520. data/spec/unit/knife/client_bulk_delete_spec.rb +166 -166
  1521. data/spec/unit/knife/client_create_spec.rb +169 -169
  1522. data/spec/unit/knife/client_delete_spec.rb +99 -99
  1523. data/spec/unit/knife/client_edit_spec.rb +53 -53
  1524. data/spec/unit/knife/client_list_spec.rb +34 -34
  1525. data/spec/unit/knife/client_reregister_spec.rb +62 -62
  1526. data/spec/unit/knife/client_show_spec.rb +52 -52
  1527. data/spec/unit/knife/configure_client_spec.rb +81 -81
  1528. data/spec/unit/knife/configure_spec.rb +190 -190
  1529. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +87 -87
  1530. data/spec/unit/knife/cookbook_delete_spec.rb +239 -239
  1531. data/spec/unit/knife/cookbook_download_spec.rb +255 -255
  1532. data/spec/unit/knife/cookbook_list_spec.rb +88 -88
  1533. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +65 -65
  1534. data/spec/unit/knife/cookbook_metadata_spec.rb +182 -182
  1535. data/spec/unit/knife/cookbook_show_spec.rb +253 -253
  1536. data/spec/unit/knife/cookbook_upload_spec.rb +304 -304
  1537. data/spec/unit/knife/core/bootstrap_context_spec.rb +307 -307
  1538. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +187 -187
  1539. data/spec/unit/knife/core/gem_glob_loader_spec.rb +209 -209
  1540. data/spec/unit/knife/core/hashed_command_loader_spec.rb +110 -110
  1541. data/spec/unit/knife/core/node_editor_spec.rb +211 -211
  1542. data/spec/unit/knife/core/object_loader_spec.rb +81 -81
  1543. data/spec/unit/knife/core/subcommand_loader_spec.rb +64 -64
  1544. data/spec/unit/knife/core/ui_spec.rb +639 -639
  1545. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +278 -278
  1546. data/spec/unit/knife/data_bag_create_spec.rb +175 -175
  1547. data/spec/unit/knife/data_bag_edit_spec.rb +126 -126
  1548. data/spec/unit/knife/data_bag_from_file_spec.rb +173 -173
  1549. data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -165
  1550. data/spec/unit/knife/data_bag_show_spec.rb +138 -138
  1551. data/spec/unit/knife/environment_compare_spec.rb +112 -112
  1552. data/spec/unit/knife/environment_create_spec.rb +91 -91
  1553. data/spec/unit/knife/environment_delete_spec.rb +71 -71
  1554. data/spec/unit/knife/environment_edit_spec.rb +79 -79
  1555. data/spec/unit/knife/environment_from_file_spec.rb +90 -90
  1556. data/spec/unit/knife/environment_list_spec.rb +54 -54
  1557. data/spec/unit/knife/environment_show_spec.rb +52 -52
  1558. data/spec/unit/knife/key_create_spec.rb +223 -223
  1559. data/spec/unit/knife/key_delete_spec.rb +133 -133
  1560. data/spec/unit/knife/key_edit_spec.rb +264 -264
  1561. data/spec/unit/knife/key_helper.rb +74 -74
  1562. data/spec/unit/knife/key_list_spec.rb +216 -216
  1563. data/spec/unit/knife/key_show_spec.rb +126 -126
  1564. data/spec/unit/knife/node_bulk_delete_spec.rb +94 -94
  1565. data/spec/unit/knife/node_delete_spec.rb +77 -77
  1566. data/spec/unit/knife/node_edit_spec.rb +116 -116
  1567. data/spec/unit/knife/node_environment_set_spec.rb +56 -56
  1568. data/spec/unit/knife/node_from_file_spec.rb +59 -59
  1569. data/spec/unit/knife/node_list_spec.rb +62 -62
  1570. data/spec/unit/knife/node_policy_set_spec.rb +122 -122
  1571. data/spec/unit/knife/node_run_list_add_spec.rb +145 -145
  1572. data/spec/unit/knife/node_run_list_remove_spec.rb +106 -106
  1573. data/spec/unit/knife/node_run_list_set_spec.rb +115 -115
  1574. data/spec/unit/knife/node_show_spec.rb +65 -65
  1575. data/spec/unit/knife/raw_spec.rb +43 -43
  1576. data/spec/unit/knife/role_bulk_delete_spec.rb +80 -80
  1577. data/spec/unit/knife/role_create_spec.rb +80 -80
  1578. data/spec/unit/knife/role_delete_spec.rb +67 -67
  1579. data/spec/unit/knife/role_edit_spec.rb +77 -77
  1580. data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -217
  1581. data/spec/unit/knife/role_env_run_list_clear_spec.rb +94 -94
  1582. data/spec/unit/knife/role_env_run_list_remove_spec.rb +102 -102
  1583. data/spec/unit/knife/role_env_run_list_replace_spec.rb +105 -105
  1584. data/spec/unit/knife/role_env_run_list_set_spec.rb +99 -99
  1585. data/spec/unit/knife/role_from_file_spec.rb +69 -69
  1586. data/spec/unit/knife/role_list_spec.rb +54 -54
  1587. data/spec/unit/knife/role_run_list_add_spec.rb +179 -179
  1588. data/spec/unit/knife/role_run_list_clear_spec.rb +84 -84
  1589. data/spec/unit/knife/role_run_list_remove_spec.rb +92 -92
  1590. data/spec/unit/knife/role_run_list_replace_spec.rb +98 -98
  1591. data/spec/unit/knife/role_run_list_set_spec.rb +89 -89
  1592. data/spec/unit/knife/role_show_spec.rb +59 -59
  1593. data/spec/unit/knife/ssh_spec.rb +496 -496
  1594. data/spec/unit/knife/ssl_check_spec.rb +256 -256
  1595. data/spec/unit/knife/ssl_fetch_spec.rb +222 -222
  1596. data/spec/unit/knife/status_spec.rb +111 -111
  1597. data/spec/unit/knife/supermarket_download_spec.rb +152 -152
  1598. data/spec/unit/knife/supermarket_install_spec.rb +201 -201
  1599. data/spec/unit/knife/supermarket_share_spec.rb +209 -209
  1600. data/spec/unit/knife/supermarket_unshare_spec.rb +78 -78
  1601. data/spec/unit/knife/tag_create_spec.rb +23 -23
  1602. data/spec/unit/knife/tag_delete_spec.rb +25 -25
  1603. data/spec/unit/knife/tag_list_spec.rb +23 -23
  1604. data/spec/unit/knife/user_create_spec.rb +184 -184
  1605. data/spec/unit/knife/user_delete_spec.rb +46 -46
  1606. data/spec/unit/knife/user_edit_spec.rb +48 -48
  1607. data/spec/unit/knife/user_list_spec.rb +36 -36
  1608. data/spec/unit/knife/user_reregister_spec.rb +56 -56
  1609. data/spec/unit/knife/user_show_spec.rb +46 -46
  1610. data/spec/unit/knife_spec.rb +616 -613
  1611. data/spec/unit/log/syslog_spec.rb +51 -51
  1612. data/spec/unit/log/winevt_spec.rb +54 -54
  1613. data/spec/unit/log_spec.rb +24 -24
  1614. data/spec/unit/lwrp_spec.rb +690 -690
  1615. data/spec/unit/mash_spec.rb +51 -51
  1616. data/spec/unit/mixin/api_version_request_handling_spec.rb +126 -126
  1617. data/spec/unit/mixin/checksum_spec.rb +54 -54
  1618. data/spec/unit/mixin/convert_to_class_name_spec.rb +54 -54
  1619. data/spec/unit/mixin/deep_merge_spec.rb +342 -342
  1620. data/spec/unit/mixin/deprecation_spec.rb +57 -57
  1621. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +96 -96
  1622. data/spec/unit/mixin/homebrew_user_spec.rb +96 -96
  1623. data/spec/unit/mixin/lazy_module_include.rb +71 -71
  1624. data/spec/unit/mixin/openssl_helper_spec.rb +857 -857
  1625. data/spec/unit/mixin/params_validate_spec.rb +421 -421
  1626. data/spec/unit/mixin/path_sanity_spec.rb +92 -92
  1627. data/spec/unit/mixin/powershell_exec_spec.rb +43 -43
  1628. data/spec/unit/mixin/powershell_out_spec.rb +94 -94
  1629. data/spec/unit/mixin/powershell_type_coercions_spec.rb +84 -84
  1630. data/spec/unit/mixin/properties_spec.rb +107 -107
  1631. data/spec/unit/mixin/proxified_socket_spec.rb +97 -97
  1632. data/spec/unit/mixin/securable_spec.rb +314 -314
  1633. data/spec/unit/mixin/shell_out_spec.rb +318 -318
  1634. data/spec/unit/mixin/subclass_directive_spec.rb +45 -45
  1635. data/spec/unit/mixin/template_spec.rb +321 -276
  1636. data/spec/unit/mixin/unformatter_spec.rb +61 -61
  1637. data/spec/unit/mixin/uris_spec.rb +57 -57
  1638. data/spec/unit/mixin/user_context_spec.rb +108 -108
  1639. data/spec/unit/mixin/versioned_api_spec.rb +128 -128
  1640. data/spec/unit/mixin/which.rb +160 -160
  1641. data/spec/unit/mixin/windows_architecture_helper_spec.rb +85 -85
  1642. data/spec/unit/mixin/xml_escape_spec.rb +54 -54
  1643. data/spec/unit/monkey_patches/uri_spec.rb +34 -34
  1644. data/spec/unit/monologger_spec.rb +45 -45
  1645. data/spec/unit/node/attribute_spec.rb +1300 -1300
  1646. data/spec/unit/node/immutable_collections_spec.rb +326 -326
  1647. data/spec/unit/node/vivid_mash_spec.rb +458 -458
  1648. data/spec/unit/node_map_spec.rb +276 -276
  1649. data/spec/unit/node_spec.rb +1843 -1843
  1650. data/spec/unit/org_spec.rb +196 -196
  1651. data/spec/unit/platform/query_helpers_spec.rb +207 -207
  1652. data/spec/unit/policy_builder/dynamic_spec.rb +261 -261
  1653. data/spec/unit/policy_builder/expand_node_object_spec.rb +311 -311
  1654. data/spec/unit/policy_builder/policyfile_spec.rb +872 -872
  1655. data/spec/unit/policy_builder_spec.rb +26 -26
  1656. data/spec/unit/property/state_spec.rb +508 -508
  1657. data/spec/unit/property/validation_spec.rb +758 -758
  1658. data/spec/unit/property_spec.rb +1324 -1324
  1659. data/spec/unit/provider/apt_preference_spec.rb +87 -87
  1660. data/spec/unit/provider/apt_repository_spec.rb +254 -254
  1661. data/spec/unit/provider/apt_update_spec.rb +116 -116
  1662. data/spec/unit/provider/cookbook_file/content_spec.rb +39 -39
  1663. data/spec/unit/provider/cookbook_file_spec.rb +59 -59
  1664. data/spec/unit/provider/cron/unix_spec.rb +144 -144
  1665. data/spec/unit/provider/cron_spec.rb +1084 -1084
  1666. data/spec/unit/provider/directory_spec.rb +300 -300
  1667. data/spec/unit/provider/dsc_resource_spec.rb +343 -343
  1668. data/spec/unit/provider/dsc_script_spec.rb +173 -173
  1669. data/spec/unit/provider/execute_spec.rb +251 -251
  1670. data/spec/unit/provider/file/content_spec.rb +114 -114
  1671. data/spec/unit/provider/file_spec.rb +57 -57
  1672. data/spec/unit/provider/git_spec.rb +782 -782
  1673. data/spec/unit/provider/group/dscl_spec.rb +339 -339
  1674. data/spec/unit/provider/group/gpasswd_spec.rb +119 -119
  1675. data/spec/unit/provider/group/groupadd_spec.rb +194 -194
  1676. data/spec/unit/provider/group/groupmod_spec.rb +136 -136
  1677. data/spec/unit/provider/group/pw_spec.rb +141 -141
  1678. data/spec/unit/provider/group/solaris_spec.rb +106 -106
  1679. data/spec/unit/provider/group/suse_spec.rb +90 -90
  1680. data/spec/unit/provider/group/usermod_spec.rb +112 -112
  1681. data/spec/unit/provider/group/windows_spec.rb +124 -124
  1682. data/spec/unit/provider/group_spec.rb +286 -286
  1683. data/spec/unit/provider/http_request_spec.rb +159 -159
  1684. data/spec/unit/provider/ifconfig/aix_spec.rb +180 -180
  1685. data/spec/unit/provider/ifconfig/debian_spec.rb +332 -332
  1686. data/spec/unit/provider/ifconfig/redhat_spec.rb +83 -83
  1687. data/spec/unit/provider/ifconfig_spec.rb +206 -206
  1688. data/spec/unit/provider/launchd_spec.rb +268 -268
  1689. data/spec/unit/provider/link_spec.rb +409 -409
  1690. data/spec/unit/provider/log_spec.rb +94 -94
  1691. data/spec/unit/provider/mdadm_spec.rb +140 -140
  1692. data/spec/unit/provider/mount/aix_spec.rb +277 -277
  1693. data/spec/unit/provider/mount/mount_spec.rb +527 -527
  1694. data/spec/unit/provider/mount/solaris_spec.rb +822 -822
  1695. data/spec/unit/provider/mount/windows_spec.rb +149 -149
  1696. data/spec/unit/provider/mount_spec.rb +191 -191
  1697. data/spec/unit/provider/ohai_spec.rb +84 -84
  1698. data/spec/unit/provider/osx_profile_spec.rb +257 -257
  1699. data/spec/unit/provider/package/apt_spec.rb +632 -632
  1700. data/spec/unit/provider/package/bff_spec.rb +187 -187
  1701. data/spec/unit/provider/package/cab_spec.rb +272 -272
  1702. data/spec/unit/provider/package/chocolatey_spec.rb +507 -507
  1703. data/spec/unit/provider/package/deb_spec.rb +135 -135
  1704. data/spec/unit/provider/package/dnf/python_helper_spec.rb +29 -29
  1705. data/spec/unit/provider/package/dpkg_spec.rb +314 -314
  1706. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +147 -147
  1707. data/spec/unit/provider/package/freebsd/port_spec.rb +151 -151
  1708. data/spec/unit/provider/package/homebrew_spec.rb +293 -293
  1709. data/spec/unit/provider/package/ips_spec.rb +233 -233
  1710. data/spec/unit/provider/package/macports_spec.rb +203 -203
  1711. data/spec/unit/provider/package/msu_spec.rb +283 -283
  1712. data/spec/unit/provider/package/openbsd_spec.rb +132 -132
  1713. data/spec/unit/provider/package/pacman_spec.rb +194 -194
  1714. data/spec/unit/provider/package/paludis_spec.rb +134 -134
  1715. data/spec/unit/provider/package/portage_spec.rb +179 -179
  1716. data/spec/unit/provider/package/powershell_spec.rb +501 -501
  1717. data/spec/unit/provider/package/rpm_spec.rb +440 -440
  1718. data/spec/unit/provider/package/rubygems_spec.rb +981 -981
  1719. data/spec/unit/provider/package/smartos_spec.rb +110 -110
  1720. data/spec/unit/provider/package/snap_spec.rb +208 -208
  1721. data/spec/unit/provider/package/solaris_spec.rb +167 -167
  1722. data/spec/unit/provider/package/windows/exe_spec.rb +201 -201
  1723. data/spec/unit/provider/package/windows/msi_spec.rb +168 -168
  1724. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +78 -78
  1725. data/spec/unit/provider/package/windows_spec.rb +463 -463
  1726. data/spec/unit/provider/package/yum/python_helper_spec.rb +29 -29
  1727. data/spec/unit/provider/package/yum/yum_cache_spec.rb +109 -109
  1728. data/spec/unit/provider/package/zypper_spec.rb +478 -478
  1729. data/spec/unit/provider/package_spec.rb +791 -791
  1730. data/spec/unit/provider/powershell_script_spec.rb +125 -125
  1731. data/spec/unit/provider/registry_key_spec.rb +487 -487
  1732. data/spec/unit/provider/remote_directory_spec.rb +236 -236
  1733. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +245 -245
  1734. data/spec/unit/provider/remote_file/content_spec.rb +253 -253
  1735. data/spec/unit/provider/remote_file/fetcher_spec.rb +95 -95
  1736. data/spec/unit/provider/remote_file/ftp_spec.rb +217 -217
  1737. data/spec/unit/provider/remote_file/http_spec.rb +324 -324
  1738. data/spec/unit/provider/remote_file/local_file_spec.rb +105 -105
  1739. data/spec/unit/provider/remote_file/network_file_spec.rb +50 -50
  1740. data/spec/unit/provider/remote_file/sftp_spec.rb +150 -150
  1741. data/spec/unit/provider/remote_file_spec.rb +62 -62
  1742. data/spec/unit/provider/route_spec.rb +270 -270
  1743. data/spec/unit/provider/ruby_block_spec.rb +45 -45
  1744. data/spec/unit/provider/script_spec.rb +157 -157
  1745. data/spec/unit/provider/service/aix_service_spec.rb +195 -195
  1746. data/spec/unit/provider/service/aixinit_service_spec.rb +272 -272
  1747. data/spec/unit/provider/service/arch_service_spec.rb +324 -324
  1748. data/spec/unit/provider/service/debian_service_spec.rb +249 -249
  1749. data/spec/unit/provider/service/freebsd_service_spec.rb +617 -617
  1750. data/spec/unit/provider/service/gentoo_service_spec.rb +144 -144
  1751. data/spec/unit/provider/service/init_service_spec.rb +235 -235
  1752. data/spec/unit/provider/service/insserv_service_spec.rb +75 -75
  1753. data/spec/unit/provider/service/invokercd_service_spec.rb +211 -211
  1754. data/spec/unit/provider/service/macosx_spec.rb +340 -340
  1755. data/spec/unit/provider/service/openbsd_service_spec.rb +549 -549
  1756. data/spec/unit/provider/service/redhat_spec.rb +250 -250
  1757. data/spec/unit/provider/service/simple_service_spec.rb +169 -169
  1758. data/spec/unit/provider/service/solaris_smf_service_spec.rb +292 -292
  1759. data/spec/unit/provider/service/systemd_service_spec.rb +364 -364
  1760. data/spec/unit/provider/service/upstart_service_spec.rb +351 -351
  1761. data/spec/unit/provider/service/windows_spec.rb +952 -952
  1762. data/spec/unit/provider/service_spec.rb +168 -168
  1763. data/spec/unit/provider/subversion_spec.rb +361 -361
  1764. data/spec/unit/provider/systemd_unit_spec.rb +967 -967
  1765. data/spec/unit/provider/template/content_spec.rb +169 -169
  1766. data/spec/unit/provider/template_spec.rb +87 -87
  1767. data/spec/unit/provider/user/aix_spec.rb +96 -96
  1768. data/spec/unit/provider/user/dscl_spec.rb +698 -698
  1769. data/spec/unit/provider/user/linux_spec.rb +73 -73
  1770. data/spec/unit/provider/user/pw_spec.rb +235 -235
  1771. data/spec/unit/provider/user/solaris_spec.rb +177 -177
  1772. data/spec/unit/provider/user/windows_spec.rb +197 -197
  1773. data/spec/unit/provider/user_spec.rb +478 -478
  1774. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +46 -46
  1775. data/spec/unit/provider/windows_env_spec.rb +400 -400
  1776. data/spec/unit/provider/windows_path_spec.rb +65 -65
  1777. data/spec/unit/provider/windows_task_spec.rb +430 -430
  1778. data/spec/unit/provider/yum_repository_spec.rb +35 -35
  1779. data/spec/unit/provider/zypper_repository_spec.rb +126 -126
  1780. data/spec/unit/provider_resolver_spec.rb +900 -900
  1781. data/spec/unit/provider_spec.rb +201 -201
  1782. data/spec/unit/pure_application_spec.rb +32 -32
  1783. data/spec/unit/recipe_spec.rb +584 -584
  1784. data/spec/unit/resource/apt_package_spec.rb +66 -66
  1785. data/spec/unit/resource/apt_preference_spec.rb +57 -57
  1786. data/spec/unit/resource/apt_repository_spec.rb +92 -92
  1787. data/spec/unit/resource/apt_update_spec.rb +62 -62
  1788. data/spec/unit/resource/archive_file_spec.rb +47 -47
  1789. data/spec/unit/resource/bash_spec.rb +45 -45
  1790. data/spec/unit/resource/batch_spec.rb +46 -46
  1791. data/spec/unit/resource/bff_package_spec.rb +51 -51
  1792. data/spec/unit/resource/breakpoint_spec.rb +64 -64
  1793. data/spec/unit/resource/build_essential_spec.rb +43 -43
  1794. data/spec/unit/resource/cab_package_spec.rb +64 -64
  1795. data/spec/unit/resource/chef_gem_spec.rb +122 -122
  1796. data/spec/unit/resource/chef_handler_spec.rb +40 -40
  1797. data/spec/unit/resource/chocolatey_config_spec.rb +93 -93
  1798. data/spec/unit/resource/chocolatey_feature_spec.rb +89 -0
  1799. data/spec/unit/resource/chocolatey_package_spec.rb +91 -91
  1800. data/spec/unit/resource/chocolatey_source_spec.rb +150 -97
  1801. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +45 -45
  1802. data/spec/unit/resource/conditional_spec.rb +254 -254
  1803. data/spec/unit/resource/cookbook_file_spec.rb +93 -93
  1804. data/spec/unit/resource/cron_access_spec.rb +36 -36
  1805. data/spec/unit/resource/cron_d_spec.rb +90 -90
  1806. data/spec/unit/resource/cron_spec.rb +173 -173
  1807. data/spec/unit/resource/csh_spec.rb +45 -45
  1808. data/spec/unit/resource/directory_spec.rb +69 -69
  1809. data/spec/unit/resource/dmg_package_spec.rb +39 -39
  1810. data/spec/unit/resource/dnf_package_spec.rb +108 -108
  1811. data/spec/unit/resource/dpkg_package_spec.rb +60 -60
  1812. data/spec/unit/resource/dsc_resource_spec.rb +102 -102
  1813. data/spec/unit/resource/dsc_script_spec.rb +134 -134
  1814. data/spec/unit/resource/execute_spec.rb +277 -277
  1815. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -103
  1816. data/spec/unit/resource/file/verification_spec.rb +147 -147
  1817. data/spec/unit/resource/file_spec.rb +127 -127
  1818. data/spec/unit/resource/freebsd_package_spec.rb +77 -77
  1819. data/spec/unit/resource/gem_package_spec.rb +67 -67
  1820. data/spec/unit/resource/git_spec.rb +62 -62
  1821. data/spec/unit/resource/group_spec.rb +165 -165
  1822. data/spec/unit/resource/homebrew_cask_spec.rb +40 -40
  1823. data/spec/unit/resource/homebrew_package_spec.rb +68 -68
  1824. data/spec/unit/resource/homebrew_tap_spec.rb +44 -44
  1825. data/spec/unit/resource/hostname_spec.rb +47 -47
  1826. data/spec/unit/resource/http_request_spec.rb +65 -65
  1827. data/spec/unit/resource/ifconfig_spec.rb +109 -109
  1828. data/spec/unit/resource/ips_package_spec.rb +54 -54
  1829. data/spec/unit/resource/kernel_module_spec.rb +43 -43
  1830. data/spec/unit/resource/ksh_spec.rb +45 -45
  1831. data/spec/unit/resource/launchd_spec.rb +40 -40
  1832. data/spec/unit/resource/link_spec.rb +124 -124
  1833. data/spec/unit/resource/locale_spec.rb +223 -223
  1834. data/spec/unit/resource/log_spec.rb +64 -64
  1835. data/spec/unit/resource/macos_user_defaults_spec.rb +35 -35
  1836. data/spec/unit/resource/macosx_service.rb +37 -37
  1837. data/spec/unit/resource/macports_package_spec.rb +51 -51
  1838. data/spec/unit/resource/mdadm_spec.rb +104 -104
  1839. data/spec/unit/resource/mount_spec.rb +178 -178
  1840. data/spec/unit/resource/msu_package_spec.rb +63 -63
  1841. data/spec/unit/resource/ohai_hint_spec.rb +44 -44
  1842. data/spec/unit/resource/ohai_spec.rb +58 -58
  1843. data/spec/unit/resource/openbsd_package_spec.rb +58 -58
  1844. data/spec/unit/resource/openssl_dhparam_spec.rb +61 -61
  1845. data/spec/unit/resource/openssl_ec_private_key_spec.rb +64 -64
  1846. data/spec/unit/resource/openssl_ec_public_key_spec.rb +43 -43
  1847. data/spec/unit/resource/openssl_rsa_private_key_spec.rb +64 -64
  1848. data/spec/unit/resource/openssl_rsa_public_key_spec.rb +43 -43
  1849. data/spec/unit/resource/openssl_x509_certificate_spec.rb +72 -72
  1850. data/spec/unit/resource/openssl_x509_crl_spec.rb +61 -61
  1851. data/spec/unit/resource/openssl_x509_request.rb +68 -68
  1852. data/spec/unit/resource/osx_profile_spec.rb +60 -60
  1853. data/spec/unit/resource/package_spec.rb +98 -98
  1854. data/spec/unit/resource/pacman_package_spec.rb +46 -46
  1855. data/spec/unit/resource/paludis_package_spec.rb +36 -36
  1856. data/spec/unit/resource/perl_spec.rb +44 -44
  1857. data/spec/unit/resource/portage_package_spec.rb +46 -46
  1858. data/spec/unit/resource/powershell_package_source_spec.rb +219 -219
  1859. data/spec/unit/resource/powershell_package_spec.rb +98 -98
  1860. data/spec/unit/resource/powershell_script_spec.rb +158 -158
  1861. data/spec/unit/resource/python_spec.rb +40 -40
  1862. data/spec/unit/resource/reboot_spec.rb +47 -47
  1863. data/spec/unit/resource/registry_key_spec.rb +215 -215
  1864. data/spec/unit/resource/remote_directory_spec.rb +118 -118
  1865. data/spec/unit/resource/remote_file_spec.rb +220 -220
  1866. data/spec/unit/resource/resource_notification_spec.rb +169 -169
  1867. data/spec/unit/resource/rhsm_errata_level_spec.rb +50 -50
  1868. data/spec/unit/resource/rhsm_errata_spec.rb +39 -39
  1869. data/spec/unit/resource/rhsm_register_spec.rb +204 -204
  1870. data/spec/unit/resource/rhsm_repo_spec.rb +64 -64
  1871. data/spec/unit/resource/rhsm_subscription_spec.rb +98 -98
  1872. data/spec/unit/resource/route_spec.rb +100 -100
  1873. data/spec/unit/resource/rpm_package_spec.rb +62 -62
  1874. data/spec/unit/resource/ruby_block_spec.rb +58 -58
  1875. data/spec/unit/resource/ruby_spec.rb +39 -39
  1876. data/spec/unit/resource/scm_spec.rb +173 -173
  1877. data/spec/unit/resource/script_spec.rb +52 -52
  1878. data/spec/unit/resource/service_spec.rb +199 -199
  1879. data/spec/unit/resource/smartos_package_spec.rb +52 -52
  1880. data/spec/unit/resource/snap_package_spec.rb +60 -60
  1881. data/spec/unit/resource/solaris_package_spec.rb +54 -54
  1882. data/spec/unit/resource/ssh_known_hosts_entry_spec.rb +50 -50
  1883. data/spec/unit/resource/subversion_spec.rb +91 -91
  1884. data/spec/unit/resource/sudo_spec.rb +99 -99
  1885. data/spec/unit/resource/swap_file_spec.rb +39 -39
  1886. data/spec/unit/resource/sysctl_spec.rb +54 -54
  1887. data/spec/unit/resource/systemd_unit_spec.rb +130 -130
  1888. data/spec/unit/resource/template_spec.rb +222 -222
  1889. data/spec/unit/resource/timezone_spec.rb +39 -39
  1890. data/spec/unit/resource/user_spec.rb +121 -121
  1891. data/spec/unit/resource/windows_ad_join_spec.rb +51 -51
  1892. data/spec/unit/resource/windows_auto_run_spec.rb +50 -50
  1893. data/spec/unit/resource/windows_certificate_spec.rb +83 -83
  1894. data/spec/unit/resource/windows_dfs_folder_spec.rb +39 -39
  1895. data/spec/unit/resource/windows_dfs_namespace_spec.rb +39 -39
  1896. data/spec/unit/resource/windows_dfs_server_spec.rb +34 -34
  1897. data/spec/unit/resource/windows_dns_record_spec.rb +55 -55
  1898. data/spec/unit/resource/windows_dns_zone_spec.rb +51 -51
  1899. data/spec/unit/resource/windows_env_spec.rb +75 -75
  1900. data/spec/unit/resource/windows_feature_dism_spec.rb +72 -72
  1901. data/spec/unit/resource/windows_feature_powershell_spec.rb +72 -72
  1902. data/spec/unit/resource/windows_feature_spec.rb +64 -64
  1903. data/spec/unit/resource/windows_firewall_rule_spec.rb +401 -401
  1904. data/spec/unit/resource/windows_font_spec.rb +43 -43
  1905. data/spec/unit/resource/windows_package_spec.rb +105 -105
  1906. data/spec/unit/resource/windows_pagefile_spec.rb +49 -49
  1907. data/spec/unit/resource/windows_path_spec.rb +40 -40
  1908. data/spec/unit/resource/windows_printer_port_spec.rb +62 -62
  1909. data/spec/unit/resource/windows_printer_spec.rb +52 -52
  1910. data/spec/unit/resource/windows_service_spec.rb +108 -108
  1911. data/spec/unit/resource/windows_share_spec.rb +39 -39
  1912. data/spec/unit/resource/windows_shortcut_spec.rb +38 -38
  1913. data/spec/unit/resource/windows_task_spec.rb +403 -403
  1914. data/spec/unit/resource/windows_uac_spec.rb +50 -50
  1915. data/spec/unit/resource/windows_workgroup_spec.rb +74 -74
  1916. data/spec/unit/resource/yum_package_spec.rb +150 -150
  1917. data/spec/unit/resource/yum_repository_spec.rb +152 -152
  1918. data/spec/unit/resource/zypper_package_spec.rb +51 -51
  1919. data/spec/unit/resource/zypper_repository_spec.rb +115 -115
  1920. data/spec/unit/resource_builder_spec.rb +1 -1
  1921. data/spec/unit/resource_collection/resource_list_spec.rb +137 -137
  1922. data/spec/unit/resource_collection/resource_set_spec.rb +244 -244
  1923. data/spec/unit/resource_collection/stepable_iterator_spec.rb +144 -144
  1924. data/spec/unit/resource_collection_spec.rb +408 -400
  1925. data/spec/unit/resource_definition_spec.rb +117 -117
  1926. data/spec/unit/resource_inspector_spec.rb +60 -60
  1927. data/spec/unit/resource_reporter_spec.rb +808 -808
  1928. data/spec/unit/resource_resolver_spec.rb +52 -52
  1929. data/spec/unit/resource_spec.rb +1218 -1218
  1930. data/spec/unit/role_spec.rb +361 -358
  1931. data/spec/unit/run_context/child_run_context_spec.rb +126 -126
  1932. data/spec/unit/run_context/cookbook_compiler_spec.rb +236 -236
  1933. data/spec/unit/run_context_spec.rb +241 -241
  1934. data/spec/unit/run_list/run_list_expansion_spec.rb +144 -144
  1935. data/spec/unit/run_list/run_list_item_spec.rb +117 -117
  1936. data/spec/unit/run_list/versioned_recipe_list_spec.rb +197 -197
  1937. data/spec/unit/run_list_spec.rb +312 -312
  1938. data/spec/unit/run_lock_spec.rb +140 -140
  1939. data/spec/unit/run_status_spec.rb +144 -144
  1940. data/spec/unit/runner_spec.rb +398 -398
  1941. data/spec/unit/scan_access_control_spec.rb +183 -183
  1942. data/spec/unit/search/query_spec.rb +283 -283
  1943. data/spec/unit/server_api_spec.rb +124 -124
  1944. data/spec/unit/server_api_versions_spec.rb +66 -66
  1945. data/spec/unit/shell/model_wrapper_spec.rb +96 -96
  1946. data/spec/unit/shell/shell_ext_spec.rb +153 -153
  1947. data/spec/unit/shell/shell_session_spec.rb +250 -250
  1948. data/spec/unit/shell_spec.rb +162 -162
  1949. data/spec/unit/train_transport_spec.rb +84 -79
  1950. data/spec/unit/user_spec.rb +275 -275
  1951. data/spec/unit/user_v1_spec.rb +583 -583
  1952. data/spec/unit/util/backup_spec.rb +141 -141
  1953. data/spec/unit/util/diff_spec.rb +576 -576
  1954. data/spec/unit/util/dsc/configuration_generator_spec.rb +193 -193
  1955. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +248 -248
  1956. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +200 -200
  1957. data/spec/unit/util/dsc/resource_store.rb +78 -78
  1958. data/spec/unit/util/editor_spec.rb +152 -152
  1959. data/spec/unit/util/file_edit_spec.rb +224 -224
  1960. data/spec/unit/util/powershell/cmdlet_spec.rb +106 -106
  1961. data/spec/unit/util/powershell/ps_credential_spec.rb +44 -44
  1962. data/spec/unit/util/selinux_spec.rb +157 -157
  1963. data/spec/unit/util/threaded_job_queue_spec.rb +51 -51
  1964. data/spec/unit/util/windows/logon_session_spec.rb +285 -285
  1965. data/spec/unit/version/platform_spec.rb +60 -60
  1966. data/spec/unit/version_class_spec.rb +171 -171
  1967. data/spec/unit/version_constraint/platform_spec.rb +45 -45
  1968. data/spec/unit/version_constraint_spec.rb +179 -179
  1969. data/spec/unit/version_string_spec.rb +79 -79
  1970. data/spec/unit/win32/error_spec.rb +77 -77
  1971. data/spec/unit/win32/link_spec.rb +73 -73
  1972. data/spec/unit/win32/registry_spec.rb +394 -394
  1973. data/spec/unit/win32/security_spec.rb +134 -134
  1974. data/spec/unit/windows_service_spec.rb +118 -118
  1975. data/tasks/.DS_Store +0 -0
  1976. data/tasks/announce.rb +51 -51
  1977. data/tasks/bin/run_external_test +39 -33
  1978. data/tasks/dependencies.rb +58 -58
  1979. data/tasks/docs.rb +337 -0
  1980. data/tasks/rspec.rb +90 -90
  1981. data/tasks/templates/release.md.erb +34 -34
  1982. metadata +41 -7
  1983. data/lib/chef/mixin/train_or_shell.rb +0 -83
@@ -1,648 +1,649 @@
1
- #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
- # Author:: Christopher Brown (<cb@chef.io>)
4
- # Copyright:: Copyright 2009-2018, Chef Software 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 "forwardable"
21
- require_relative "version"
22
- require "mixlib/cli"
23
- require_relative "workstation_config_loader"
24
- require_relative "mixin/convert_to_class_name"
25
- require_relative "mixin/path_sanity"
26
- require_relative "knife/core/subcommand_loader"
27
- require_relative "knife/core/ui"
28
- require_relative "local_mode"
29
- require_relative "server_api"
30
- require_relative "http/authenticator"
31
- require_relative "http/http_request"
32
- require_relative "http"
33
- require "pp"
34
- require_relative "dist"
35
-
36
- class Chef
37
- class Knife
38
-
39
- Chef::HTTP::HTTPRequest.user_agent = "#{Chef::Dist::PRODUCT} Knife#{Chef::HTTP::HTTPRequest::UA_COMMON}"
40
-
41
- include Mixlib::CLI
42
- include Chef::Mixin::PathSanity
43
- extend Chef::Mixin::ConvertToClassName
44
- extend Forwardable
45
-
46
- # @note Backwards Compat:
47
- # Ideally, we should not vomit all of these methods into this base class;
48
- # instead, they should be accessed by hitting the ui object directly.
49
- def_delegator :@ui, :stdout
50
- def_delegator :@ui, :stderr
51
- def_delegator :@ui, :stdin
52
- def_delegator :@ui, :msg
53
- def_delegator :@ui, :ask_question
54
- def_delegator :@ui, :pretty_print
55
- def_delegator :@ui, :output
56
- def_delegator :@ui, :format_list_for_display
57
- def_delegator :@ui, :format_for_display
58
- def_delegator :@ui, :format_cookbook_list_for_display
59
- def_delegator :@ui, :edit_data
60
- def_delegator :@ui, :edit_hash
61
- def_delegator :@ui, :edit_object
62
- def_delegator :@ui, :confirm
63
-
64
- attr_accessor :name_args
65
- attr_accessor :ui
66
-
67
- # Configure mixlib-cli to always separate defaults from user-supplied CLI options
68
- def self.use_separate_defaults?
69
- true
70
- end
71
-
72
- def self.ui
73
- @ui ||= Chef::Knife::UI.new(STDOUT, STDERR, STDIN, {})
74
- end
75
-
76
- def self.msg(msg = "")
77
- ui.msg(msg)
78
- end
79
-
80
- def self.reset_config_loader!
81
- @@chef_config_dir = nil
82
- @config_loader = nil
83
- end
84
-
85
- def self.reset_subcommands!
86
- @@subcommands = {}
87
- @subcommands_by_category = nil
88
- end
89
-
90
- def self.inherited(subclass)
91
- unless subclass.unnamed?
92
- subcommands[subclass.snake_case_name] = subclass
93
- subcommand_files[subclass.snake_case_name] +=
94
- if subclass.superclass.to_s == "Chef::ChefFS::Knife"
95
- # ChefFS-based commands have a superclass that defines an
96
- # inhereited method which calls super. This means that the
97
- # top of the call stack is not the class definition for
98
- # our subcommand. Try the second entry in the call stack.
99
- [path_from_caller(caller[1])]
100
- else
101
- [path_from_caller(caller[0])]
102
- end
103
- end
104
- end
105
-
106
- # Explicitly set the category for the current command to +new_category+
107
- # The category is normally determined from the first word of the command
108
- # name, but some commands make more sense using two or more words
109
- # @param new_category [String] value to set the category to (see examples)
110
- #
111
- # @example Data bag commands would be in the 'data' category by default. To
112
- # put them in the 'data bag' category:
113
- # category('data bag')
114
- def self.category(new_category)
115
- @category = new_category
116
- end
117
-
118
- def self.subcommand_category
119
- @category || snake_case_name.split("_").first unless unnamed?
120
- end
121
-
122
- def self.snake_case_name
123
- convert_to_snake_case(name.split("::").last) unless unnamed?
124
- end
125
-
126
- def self.common_name
127
- snake_case_name.split("_").join(" ")
128
- end
129
-
130
- # Does this class have a name? (Classes created via Class.new don't)
131
- def self.unnamed?
132
- name.nil? || name.empty?
133
- end
134
-
135
- def self.subcommand_loader
136
- @subcommand_loader ||= Chef::Knife::SubcommandLoader.for_config(chef_config_dir)
137
- end
138
-
139
- def self.load_commands
140
- @commands_loaded ||= subcommand_loader.load_commands
141
- end
142
-
143
- def self.guess_category(args)
144
- subcommand_loader.guess_category(args)
145
- end
146
-
147
- def self.subcommand_class_from(args)
148
- if args.size == 1 && args[0].strip.casecmp("rehash") == 0
149
- # To prevent issues with the rehash file not pointing to the correct plugins,
150
- # we always use the glob loader when regenerating the rehash file
151
- @subcommand_loader = Chef::Knife::SubcommandLoader.gem_glob_loader(chef_config_dir)
152
- end
153
- subcommand_loader.command_class_from(args) || subcommand_not_found!(args)
154
- end
155
-
156
- def self.subcommands
157
- @@subcommands ||= {}
158
- end
159
-
160
- def self.subcommand_files
161
- @@subcommand_files ||= Hash.new([])
162
- end
163
-
164
- def self.subcommands_by_category
165
- unless @subcommands_by_category
166
- @subcommands_by_category = Hash.new { |hash, key| hash[key] = [] }
167
- subcommands.each do |snake_cased, klass|
168
- @subcommands_by_category[klass.subcommand_category] << snake_cased
169
- end
170
- end
171
- @subcommands_by_category
172
- end
173
-
174
- # Shared with subclasses
175
- @@chef_config_dir = nil
176
-
177
- def self.config_loader
178
- @config_loader ||= WorkstationConfigLoader.new(nil, Chef::Log)
179
- end
180
-
181
- def self.load_config(explicit_config_file, profile)
182
- config_loader.explicit_config_file = explicit_config_file
183
- config_loader.profile = profile
184
- config_loader.load
185
-
186
- ui.warn("No knife configuration file found. See https://docs.chef.io/config_rb_knife.html for details.") if config_loader.no_config_found?
187
-
188
- config_loader
189
- rescue Exceptions::ConfigurationError => e
190
- ui.error(ui.color("CONFIGURATION ERROR:", :red) + e.message)
191
- exit 1
192
- end
193
-
194
- def self.chef_config_dir
195
- @@chef_config_dir ||= config_loader.chef_config_dir
196
- end
197
-
198
- # Run knife for the given +args+ (ARGV), adding +options+ to the list of
199
- # CLI options that the subcommand knows how to handle.
200
- #
201
- # @param args [Array] The arguments. Usually ARGV
202
- # @param options [Mixlib::CLI option parser hash] These +options+ are how
203
- # subcommands know about global knife CLI options
204
- #
205
- def self.run(args, options = {})
206
- # Fallback debug logging. Normally the logger isn't configured until we
207
- # read the config, but this means any logging that happens before the
208
- # config file is read may be lost. If the KNIFE_DEBUG variable is set, we
209
- # setup the logger for debug logging to stderr immediately to catch info
210
- # from early in the setup process.
211
- if ENV["KNIFE_DEBUG"]
212
- Chef::Log.init($stderr)
213
- Chef::Log.level(:debug)
214
- end
215
-
216
- subcommand_class = subcommand_class_from(args)
217
- subcommand_class.options = options.merge!(subcommand_class.options)
218
- subcommand_class.load_deps
219
- instance = subcommand_class.new(args)
220
- instance.configure_chef
221
- instance.run_with_pretty_exceptions
222
- end
223
-
224
- def self.dependency_loaders
225
- @dependency_loaders ||= []
226
- end
227
-
228
- def self.deps(&block)
229
- dependency_loaders << block
230
- end
231
-
232
- def self.load_deps
233
- dependency_loaders.each do |dep_loader|
234
- dep_loader.call
235
- end
236
- end
237
-
238
- OFFICIAL_PLUGINS = %w{ec2 rackspace windows openstack azure google linode push vcenter lpar}.freeze
239
-
240
- class << self
241
- def list_commands(preferred_category = nil)
242
- category_desc = preferred_category ? preferred_category + " " : ""
243
- msg "Available #{category_desc}subcommands: (for details, knife SUB-COMMAND --help)\n\n"
244
- subcommand_loader.list_commands(preferred_category).sort.each do |category, commands|
245
- next if category =~ /deprecated/i
246
- msg "** #{category.upcase} COMMANDS **"
247
- commands.sort.each do |command|
248
- subcommand_loader.load_command(command)
249
- msg subcommands[command].banner if subcommands[command]
250
- end
251
- msg
252
- end
253
- end
254
-
255
- private
256
-
257
- # @api private
258
- def path_from_caller(caller_line)
259
- caller_line.split(/:\d+/).first
260
- end
261
-
262
- # Error out and print usage. probably because the arguments given by the
263
- # user could not be resolved to a subcommand.
264
- # @api private
265
- def subcommand_not_found!(args)
266
- ui.fatal("Cannot find subcommand for: '#{args.join(' ')}'")
267
-
268
- # Mention rehash when the subcommands cache(plugin_manifest.json) is used
269
- if subcommand_loader.is_a?(Chef::Knife::SubcommandLoader::HashedCommandLoader)
270
- ui.info("If this is a recently installed plugin, please run 'knife rehash' to update the subcommands cache.")
271
- end
272
-
273
- if category_commands = guess_category(args)
274
- list_commands(category_commands)
275
- elsif OFFICIAL_PLUGINS.include?(args[0]) # command was an uninstalled official chef knife plugin
276
- ui.info("Use `#{Chef::Dist::EXEC} gem install knife-#{args[0]}` to install the plugin into ChefDK")
277
- else
278
- list_commands
279
- end
280
-
281
- exit 10
282
- end
283
-
284
- # @api private
285
- def reset_config_path!
286
- @@chef_config_dir = nil
287
- end
288
-
289
- end
290
-
291
- reset_config_path!
292
-
293
- # Create a new instance of the current class configured for the given
294
- # arguments and options
295
- def initialize(argv = [])
296
- super() # having to call super in initialize is the most annoying anti-pattern :(
297
- @ui = Chef::Knife::UI.new(STDOUT, STDERR, STDIN, config)
298
-
299
- command_name_words = self.class.snake_case_name.split("_")
300
-
301
- # Mixlib::CLI ignores the embedded name_args
302
- @name_args = parse_options(argv)
303
- @name_args.delete(command_name_words.join("-"))
304
- @name_args.reject! { |name_arg| command_name_words.delete(name_arg) }
305
-
306
- # knife node run_list add requires that we have extra logic to handle
307
- # the case that command name words could be joined by an underscore :/
308
- command_name_joined = command_name_words.join("_")
309
- @name_args.reject! { |name_arg| command_name_joined == name_arg }
310
-
311
- # Similar handling for hyphens.
312
- command_name_joined = command_name_words.join("-")
313
- @name_args.reject! { |name_arg| command_name_joined == name_arg }
314
-
315
- if config[:help]
316
- msg opt_parser
317
- exit 1
318
- end
319
-
320
- # Grab a copy before config merge occurs, so that we can later identify
321
- # whare a given config value is sourced from.
322
- @original_config = config.dup
323
-
324
- # copy Mixlib::CLI over so that it can be configured in config.rb/knife.rb
325
- # config file
326
- Chef::Config[:verbosity] = config[:verbosity] if config[:verbosity]
327
- end
328
-
329
- def parse_options(args)
330
- super
331
- rescue OptionParser::InvalidOption => e
332
- puts "Error: " + e.to_s
333
- show_usage
334
- exit(1)
335
- end
336
-
337
- # keys from mixlib-cli options
338
- def cli_keys
339
- self.class.options.keys
340
- end
341
-
342
- # extracts the settings from the Chef::Config[:knife] sub-hash that correspond
343
- # to knife cli options -- in preparation for merging config values with cli values
344
- #
345
- # NOTE: due to weirdness in mixlib-config #has_key? is only true if the value has
346
- # been set by the user -- the Chef::Config defaults return #has_key?() of false and
347
- # this code DEPENDS on that functionality since applying the default values in
348
- # Chef::Config[:knife] would break the defaults in the cli that we would otherwise
349
- # overwrite.
350
- def config_file_settings
351
- cli_keys.each_with_object({}) do |key, memo|
352
- if Chef::Config[:knife].key?(key)
353
- memo[key] = Chef::Config[:knife][key]
354
- end
355
- end
356
- end
357
-
358
- # config is merged in this order (inverse of precedence)
359
- # default_config - mixlib-cli defaults (accessor from the mixin)
360
- # config_file_settings - Chef::Config[:knife] sub-hash
361
- # config - mixlib-cli settings (accessor from the mixin)
362
- def merge_configs
363
- # Update our original_config - if someone has created a knife command
364
- # instance directly, they are likely ot have set cmd.config values directly
365
- # as well, at which point our saved original config is no longer up to date.
366
- @original_config = config.dup
367
- # other code may have a handle to the config object, so use Hash#replace to deliberately
368
- # update-in-place.
369
- config.replace(default_config.merge(config_file_settings).merge(config))
370
- end
371
-
372
- #
373
- # Determine the source of a given configuration key
374
- #
375
- # @argument key [Symbol] a configuration key
376
- # @return [Symbol,NilClass] return the source of the config key,
377
- # one of:
378
- # - :cli - this was explicitly provided on the CLI
379
- # - :config - this came from Chef::Config[:knife]
380
- # - :cli_default - came from a declared CLI `option`'s `default` value.
381
- # - nil - if the key could not be found in any source.
382
- # This can happen when it is invalid, or has been
383
- # set directly into #config without then calling #merge_config
384
- def config_source(key)
385
- return :cli if @original_config.include? key
386
- return :config if config_file_settings.key? key
387
- return :cli_default if default_config.include? key
388
- nil
389
- end
390
-
391
- # Catch-all method that does any massaging needed for various config
392
- # components, such as expanding file paths and converting verbosity level
393
- # into log level.
394
- def apply_computed_config
395
- Chef::Config[:color] = config[:color]
396
-
397
- case Chef::Config[:verbosity]
398
- when 0, nil
399
- Chef::Config[:log_level] = :warn
400
- when 1
401
- Chef::Config[:log_level] = :info
402
- when 2
403
- Chef::Config[:log_level] = :debug
404
- else
405
- Chef::Config[:log_level] = :trace
406
- end
407
-
408
- Chef::Config[:log_level] = :trace if ENV["KNIFE_DEBUG"]
409
-
410
- Chef::Config[:node_name] = config[:node_name] if config[:node_name]
411
- Chef::Config[:client_key] = config[:client_key] if config[:client_key]
412
- Chef::Config[:chef_server_url] = config[:chef_server_url] if config[:chef_server_url]
413
- Chef::Config[:environment] = config[:environment] if config[:environment]
414
-
415
- Chef::Config.local_mode = config[:local_mode] if config.key?(:local_mode)
416
-
417
- Chef::Config.listen = config[:listen] if config.key?(:listen)
418
-
419
- if Chef::Config.local_mode && !Chef::Config.key?(:cookbook_path) && !Chef::Config.key?(:chef_repo_path)
420
- Chef::Config.chef_repo_path = Chef::Config.find_chef_repo_path(Dir.pwd)
421
- end
422
- Chef::Config.chef_zero.host = config[:chef_zero_host] if config[:chef_zero_host]
423
- Chef::Config.chef_zero.port = config[:chef_zero_port] if config[:chef_zero_port]
424
-
425
- # Expand a relative path from the config directory. Config from command
426
- # line should already be expanded, and absolute paths will be unchanged.
427
- if Chef::Config[:client_key] && config[:config_file]
428
- Chef::Config[:client_key] = File.expand_path(Chef::Config[:client_key], File.dirname(config[:config_file]))
429
- end
430
-
431
- Mixlib::Log::Formatter.show_time = false
432
- Chef::Log.init(Chef::Config[:log_location])
433
- Chef::Log.level(Chef::Config[:log_level] || :error)
434
- end
435
-
436
- def configure_chef
437
- # knife needs to send logger output to STDERR by default
438
- Chef::Config[:log_location] = STDERR
439
- config_loader = self.class.load_config(config[:config_file], config[:profile])
440
- config[:config_file] = config_loader.config_location
441
-
442
- # For CLI options like `--config-option key=value`. These have to get
443
- # parsed and applied separately.
444
- extra_config_options = config.delete(:config_option)
445
-
446
- merge_configs
447
- apply_computed_config
448
-
449
- # This has to be after apply_computed_config so that Mixlib::Log is configured
450
- Chef::Log.info("Using configuration from #{config[:config_file]}") if config[:config_file]
451
-
452
- begin
453
- Chef::Config.apply_extra_config_options(extra_config_options)
454
- rescue ChefConfig::UnparsableConfigOption => e
455
- ui.error e.message
456
- show_usage
457
- exit(1)
458
- end
459
-
460
- Chef::Config.export_proxies
461
- end
462
-
463
- def show_usage
464
- stdout.puts("USAGE: " + opt_parser.to_s)
465
- end
466
-
467
- def run_with_pretty_exceptions(raise_exception = false)
468
- unless respond_to?(:run)
469
- ui.error "You need to add a #run method to your knife command before you can use it"
470
- end
471
- enforce_path_sanity
472
- maybe_setup_fips
473
- Chef::LocalMode.with_server_connectivity do
474
- run
475
- end
476
- rescue Exception => e
477
- raise if raise_exception || Chef::Config[:verbosity] == 2
478
- humanize_exception(e)
479
- exit 100
480
- end
481
-
482
- def humanize_exception(e)
483
- case e
484
- when SystemExit
485
- raise # make sure exit passes through.
486
- when Net::HTTPClientException, Net::HTTPFatalError
487
- humanize_http_exception(e)
488
- when OpenSSL::SSL::SSLError
489
- ui.error "Could not establish a secure connection to the server."
490
- ui.info "Use `knife ssl check` to troubleshoot your SSL configuration."
491
- ui.info "If your server uses a self-signed certificate, you can use"
492
- ui.info "`knife ssl fetch` to make knife trust the server's certificates."
493
- ui.info ""
494
- ui.info "Original Exception: #{e.class.name}: #{e.message}"
495
- when Errno::ECONNREFUSED, Timeout::Error, Errno::ETIMEDOUT, SocketError
496
- ui.error "Network Error: #{e.message}"
497
- ui.info "Check your knife configuration and network settings"
498
- when NameError, NoMethodError
499
- ui.error "knife encountered an unexpected error"
500
- ui.info "This may be a bug in the '#{self.class.common_name}' knife command or plugin"
501
- ui.info "Please collect the output of this command with the `-VVV` option before filing a bug report."
502
- ui.info "Exception: #{e.class.name}: #{e.message}"
503
- when Chef::Exceptions::PrivateKeyMissing
504
- ui.error "Your private key could not be loaded from #{api_key}"
505
- ui.info "Check your configuration file and ensure that your private key is readable"
506
- when Chef::Exceptions::InvalidRedirect
507
- ui.error "Invalid Redirect: #{e.message}"
508
- ui.info "Change your server location in config.rb/knife.rb to the server's FQDN to avoid unwanted redirections."
509
- else
510
- ui.error "#{e.class.name}: #{e.message}"
511
- end
512
- end
513
-
514
- def humanize_http_exception(e)
515
- response = e.response
516
- case response
517
- when Net::HTTPUnauthorized
518
- ui.error "Failed to authenticate to #{server_url} as #{username} with key #{api_key}"
519
- ui.info "Response: #{format_rest_error(response)}"
520
- when Net::HTTPForbidden
521
- ui.error "You authenticated successfully to #{server_url} as #{username} but you are not authorized for this action."
522
- proxy_env_vars = ENV.to_hash.keys.map(&:downcase) & %w{http_proxy https_proxy ftp_proxy socks_proxy no_proxy}
523
- unless proxy_env_vars.empty?
524
- ui.error "There are proxy servers configured, your server url may need to be added to NO_PROXY."
525
- end
526
- ui.info "Response: #{format_rest_error(response)}"
527
- when Net::HTTPBadRequest
528
- ui.error "The data in your request was invalid"
529
- ui.info "Response: #{format_rest_error(response)}"
530
- when Net::HTTPNotFound
531
- ui.error "The object you are looking for could not be found"
532
- ui.info "Response: #{format_rest_error(response)}"
533
- when Net::HTTPInternalServerError
534
- ui.error "internal server error"
535
- ui.info "Response: #{format_rest_error(response)}"
536
- when Net::HTTPBadGateway
537
- ui.error "bad gateway"
538
- ui.info "Response: #{format_rest_error(response)}"
539
- when Net::HTTPServiceUnavailable
540
- ui.error "Service temporarily unavailable"
541
- ui.info "Response: #{format_rest_error(response)}"
542
- when Net::HTTPNotAcceptable
543
- version_header = Chef::JSONCompat.from_json(response["x-ops-server-api-version"])
544
- client_api_version = version_header["request_version"]
545
- min_server_version = version_header["min_version"]
546
- max_server_version = version_header["max_version"]
547
- ui.error "The API version that Knife is using is not supported by the server you sent this request to."
548
- ui.info "The request that Knife sent was using API version #{client_api_version}."
549
- ui.info "The server you sent the request to supports a min API verson of #{min_server_version} and a max API version of #{max_server_version}."
550
- ui.info "Please either update your #{Chef::Dist::PRODUCT} or the server to be a compatible set."
551
- else
552
- ui.error response.message
553
- ui.info "Response: #{format_rest_error(response)}"
554
- end
555
- end
556
-
557
- def username
558
- Chef::Config[:node_name]
559
- end
560
-
561
- def api_key
562
- Chef::Config[:client_key]
563
- end
564
-
565
- # Parses JSON from the error response sent by Chef Server and returns the
566
- # error message
567
- #--
568
- # TODO: this code belongs in Chef::REST
569
- def format_rest_error(response)
570
- Array(Chef::JSONCompat.from_json(response.body)["error"]).join("; ")
571
- rescue Exception
572
- response.body
573
- end
574
-
575
- # FIXME: yard with @yield
576
- def create_object(object, pretty_name = nil, object_class: nil)
577
- output = if object_class
578
- edit_data(object, object_class: object_class)
579
- else
580
- edit_hash(object)
581
- end
582
-
583
- if Kernel.block_given?
584
- output = yield(output)
585
- else
586
- output.save
587
- end
588
-
589
- pretty_name ||= output
590
-
591
- msg("Created #{pretty_name}")
592
-
593
- output(output) if config[:print_after]
594
- end
595
-
596
- # FIXME: yard with @yield
597
- def delete_object(klass, name, delete_name = nil)
598
- confirm("Do you really want to delete #{name}")
599
-
600
- if Kernel.block_given?
601
- object = yield
602
- else
603
- object = klass.load(name)
604
- object.destroy
605
- end
606
-
607
- output(format_for_display(object)) if config[:print_after]
608
-
609
- obj_name = delete_name ? "#{delete_name}[#{name}]" : object
610
- msg("Deleted #{obj_name}")
611
- end
612
-
613
- # helper method for testing if a field exists
614
- # and returning the usage and proper error if not
615
- def test_mandatory_field(field, fieldname)
616
- if field.nil?
617
- show_usage
618
- ui.fatal("You must specify a #{fieldname}")
619
- exit 1
620
- end
621
- end
622
-
623
- def rest
624
- @rest ||= begin
625
- require_relative "server_api"
626
- Chef::ServerAPI.new(Chef::Config[:chef_server_url])
627
- end
628
- end
629
-
630
- def noauth_rest
631
- @rest ||= begin
632
- require_relative "http/simple_json"
633
- Chef::HTTP::SimpleJSON.new(Chef::Config[:chef_server_url])
634
- end
635
- end
636
-
637
- def server_url
638
- Chef::Config[:chef_server_url]
639
- end
640
-
641
- def maybe_setup_fips
642
- if !config[:fips].nil?
643
- Chef::Config[:fips] = config[:fips]
644
- end
645
- Chef::Config.init_openssl
646
- end
647
- end
648
- end
1
+ #
2
+ # Author:: Adam Jacob (<adam@chef.io>)
3
+ # Author:: Christopher Brown (<cb@chef.io>)
4
+ # Copyright:: Copyright 2009-2018, Chef Software 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 "forwardable" unless defined?(Forwardable)
21
+ require_relative "version"
22
+ require "mixlib/cli" unless defined?(Mixlib::CLI)
23
+ require_relative "workstation_config_loader"
24
+ require_relative "mixin/convert_to_class_name"
25
+ require_relative "mixin/path_sanity"
26
+ require_relative "knife/core/subcommand_loader"
27
+ require_relative "knife/core/ui"
28
+ require_relative "local_mode"
29
+ require_relative "server_api"
30
+ require_relative "http/authenticator"
31
+ require_relative "http/http_request"
32
+ require_relative "http"
33
+ require "pp" unless defined?(PP)
34
+ require_relative "dist"
35
+
36
+ class Chef
37
+ class Knife
38
+
39
+ Chef::HTTP::HTTPRequest.user_agent = "#{Chef::Dist::PRODUCT} Knife#{Chef::HTTP::HTTPRequest::UA_COMMON}"
40
+
41
+ include Mixlib::CLI
42
+ include Chef::Mixin::PathSanity
43
+ extend Chef::Mixin::ConvertToClassName
44
+ extend Forwardable
45
+
46
+ # @note Backwards Compat:
47
+ # Ideally, we should not vomit all of these methods into this base class;
48
+ # instead, they should be accessed by hitting the ui object directly.
49
+ def_delegator :@ui, :stdout
50
+ def_delegator :@ui, :stderr
51
+ def_delegator :@ui, :stdin
52
+ def_delegator :@ui, :msg
53
+ def_delegator :@ui, :ask_question
54
+ def_delegator :@ui, :pretty_print
55
+ def_delegator :@ui, :output
56
+ def_delegator :@ui, :format_list_for_display
57
+ def_delegator :@ui, :format_for_display
58
+ def_delegator :@ui, :format_cookbook_list_for_display
59
+ def_delegator :@ui, :edit_data
60
+ def_delegator :@ui, :edit_hash
61
+ def_delegator :@ui, :edit_object
62
+ def_delegator :@ui, :confirm
63
+
64
+ attr_accessor :name_args
65
+ attr_accessor :ui
66
+
67
+ # Configure mixlib-cli to always separate defaults from user-supplied CLI options
68
+ def self.use_separate_defaults?
69
+ true
70
+ end
71
+
72
+ def self.ui
73
+ @ui ||= Chef::Knife::UI.new(STDOUT, STDERR, STDIN, {})
74
+ end
75
+
76
+ def self.msg(msg = "")
77
+ ui.msg(msg)
78
+ end
79
+
80
+ def self.reset_config_loader!
81
+ @@chef_config_dir = nil
82
+ @config_loader = nil
83
+ end
84
+
85
+ def self.reset_subcommands!
86
+ @@subcommands = {}
87
+ @subcommands_by_category = nil
88
+ end
89
+
90
+ def self.inherited(subclass)
91
+ super
92
+ unless subclass.unnamed?
93
+ subcommands[subclass.snake_case_name] = subclass
94
+ subcommand_files[subclass.snake_case_name] +=
95
+ if subclass.superclass.to_s == "Chef::ChefFS::Knife"
96
+ # ChefFS-based commands have a superclass that defines an
97
+ # inhereited method which calls super. This means that the
98
+ # top of the call stack is not the class definition for
99
+ # our subcommand. Try the second entry in the call stack.
100
+ [path_from_caller(caller[1])]
101
+ else
102
+ [path_from_caller(caller[0])]
103
+ end
104
+ end
105
+ end
106
+
107
+ # Explicitly set the category for the current command to +new_category+
108
+ # The category is normally determined from the first word of the command
109
+ # name, but some commands make more sense using two or more words
110
+ # @param new_category [String] value to set the category to (see examples)
111
+ #
112
+ # @example Data bag commands would be in the 'data' category by default. To
113
+ # put them in the 'data bag' category:
114
+ # category('data bag')
115
+ def self.category(new_category)
116
+ @category = new_category
117
+ end
118
+
119
+ def self.subcommand_category
120
+ @category || snake_case_name.split("_").first unless unnamed?
121
+ end
122
+
123
+ def self.snake_case_name
124
+ convert_to_snake_case(name.split("::").last) unless unnamed?
125
+ end
126
+
127
+ def self.common_name
128
+ snake_case_name.split("_").join(" ")
129
+ end
130
+
131
+ # Does this class have a name? (Classes created via Class.new don't)
132
+ def self.unnamed?
133
+ name.nil? || name.empty?
134
+ end
135
+
136
+ def self.subcommand_loader
137
+ @subcommand_loader ||= Chef::Knife::SubcommandLoader.for_config(chef_config_dir)
138
+ end
139
+
140
+ def self.load_commands
141
+ @commands_loaded ||= subcommand_loader.load_commands
142
+ end
143
+
144
+ def self.guess_category(args)
145
+ subcommand_loader.guess_category(args)
146
+ end
147
+
148
+ def self.subcommand_class_from(args)
149
+ if args.size == 1 && args[0].strip.casecmp("rehash") == 0
150
+ # To prevent issues with the rehash file not pointing to the correct plugins,
151
+ # we always use the glob loader when regenerating the rehash file
152
+ @subcommand_loader = Chef::Knife::SubcommandLoader.gem_glob_loader(chef_config_dir)
153
+ end
154
+ subcommand_loader.command_class_from(args) || subcommand_not_found!(args)
155
+ end
156
+
157
+ def self.subcommands
158
+ @@subcommands ||= {}
159
+ end
160
+
161
+ def self.subcommand_files
162
+ @@subcommand_files ||= Hash.new([])
163
+ end
164
+
165
+ def self.subcommands_by_category
166
+ unless @subcommands_by_category
167
+ @subcommands_by_category = Hash.new { |hash, key| hash[key] = [] }
168
+ subcommands.each do |snake_cased, klass|
169
+ @subcommands_by_category[klass.subcommand_category] << snake_cased
170
+ end
171
+ end
172
+ @subcommands_by_category
173
+ end
174
+
175
+ # Shared with subclasses
176
+ @@chef_config_dir = nil
177
+
178
+ def self.config_loader
179
+ @config_loader ||= WorkstationConfigLoader.new(nil, Chef::Log)
180
+ end
181
+
182
+ def self.load_config(explicit_config_file, profile)
183
+ config_loader.explicit_config_file = explicit_config_file
184
+ config_loader.profile = profile
185
+ config_loader.load
186
+
187
+ ui.warn("No knife configuration file found. See https://docs.chef.io/config_rb_knife.html for details.") if config_loader.no_config_found?
188
+
189
+ config_loader
190
+ rescue Exceptions::ConfigurationError => e
191
+ ui.error(ui.color("CONFIGURATION ERROR:", :red) + e.message)
192
+ exit 1
193
+ end
194
+
195
+ def self.chef_config_dir
196
+ @@chef_config_dir ||= config_loader.chef_config_dir
197
+ end
198
+
199
+ # Run knife for the given +args+ (ARGV), adding +options+ to the list of
200
+ # CLI options that the subcommand knows how to handle.
201
+ #
202
+ # @param args [Array] The arguments. Usually ARGV
203
+ # @param options [Mixlib::CLI option parser hash] These +options+ are how
204
+ # subcommands know about global knife CLI options
205
+ #
206
+ def self.run(args, options = {})
207
+ # Fallback debug logging. Normally the logger isn't configured until we
208
+ # read the config, but this means any logging that happens before the
209
+ # config file is read may be lost. If the KNIFE_DEBUG variable is set, we
210
+ # setup the logger for debug logging to stderr immediately to catch info
211
+ # from early in the setup process.
212
+ if ENV["KNIFE_DEBUG"]
213
+ Chef::Log.init($stderr)
214
+ Chef::Log.level(:debug)
215
+ end
216
+
217
+ subcommand_class = subcommand_class_from(args)
218
+ subcommand_class.options = options.merge!(subcommand_class.options)
219
+ subcommand_class.load_deps
220
+ instance = subcommand_class.new(args)
221
+ instance.configure_chef
222
+ instance.run_with_pretty_exceptions
223
+ end
224
+
225
+ def self.dependency_loaders
226
+ @dependency_loaders ||= []
227
+ end
228
+
229
+ def self.deps(&block)
230
+ dependency_loaders << block
231
+ end
232
+
233
+ def self.load_deps
234
+ dependency_loaders.each do |dep_loader|
235
+ dep_loader.call
236
+ end
237
+ end
238
+
239
+ OFFICIAL_PLUGINS = %w{ec2 rackspace windows openstack azure google linode push vcenter lpar}.freeze
240
+
241
+ class << self
242
+ def list_commands(preferred_category = nil)
243
+ category_desc = preferred_category ? preferred_category + " " : ""
244
+ msg "Available #{category_desc}subcommands: (for details, knife SUB-COMMAND --help)\n\n"
245
+ subcommand_loader.list_commands(preferred_category).sort.each do |category, commands|
246
+ next if category =~ /deprecated/i
247
+ msg "** #{category.upcase} COMMANDS **"
248
+ commands.sort.each do |command|
249
+ subcommand_loader.load_command(command)
250
+ msg subcommands[command].banner if subcommands[command]
251
+ end
252
+ msg
253
+ end
254
+ end
255
+
256
+ private
257
+
258
+ # @api private
259
+ def path_from_caller(caller_line)
260
+ caller_line.split(/:\d+/).first
261
+ end
262
+
263
+ # Error out and print usage. probably because the arguments given by the
264
+ # user could not be resolved to a subcommand.
265
+ # @api private
266
+ def subcommand_not_found!(args)
267
+ ui.fatal("Cannot find subcommand for: '#{args.join(' ')}'")
268
+
269
+ # Mention rehash when the subcommands cache(plugin_manifest.json) is used
270
+ if subcommand_loader.is_a?(Chef::Knife::SubcommandLoader::HashedCommandLoader)
271
+ ui.info("If this is a recently installed plugin, please run 'knife rehash' to update the subcommands cache.")
272
+ end
273
+
274
+ if category_commands = guess_category(args)
275
+ list_commands(category_commands)
276
+ elsif OFFICIAL_PLUGINS.include?(args[0]) # command was an uninstalled official chef knife plugin
277
+ ui.info("Use `#{Chef::Dist::EXEC} gem install knife-#{args[0]}` to install the plugin into ChefDK")
278
+ else
279
+ list_commands
280
+ end
281
+
282
+ exit 10
283
+ end
284
+
285
+ # @api private
286
+ def reset_config_path!
287
+ @@chef_config_dir = nil
288
+ end
289
+
290
+ end
291
+
292
+ reset_config_path!
293
+
294
+ # Create a new instance of the current class configured for the given
295
+ # arguments and options
296
+ def initialize(argv = [])
297
+ super() # having to call super in initialize is the most annoying anti-pattern :(
298
+ @ui = Chef::Knife::UI.new(STDOUT, STDERR, STDIN, config)
299
+
300
+ command_name_words = self.class.snake_case_name.split("_")
301
+
302
+ # Mixlib::CLI ignores the embedded name_args
303
+ @name_args = parse_options(argv)
304
+ @name_args.delete(command_name_words.join("-"))
305
+ @name_args.reject! { |name_arg| command_name_words.delete(name_arg) }
306
+
307
+ # knife node run_list add requires that we have extra logic to handle
308
+ # the case that command name words could be joined by an underscore :/
309
+ command_name_joined = command_name_words.join("_")
310
+ @name_args.reject! { |name_arg| command_name_joined == name_arg }
311
+
312
+ # Similar handling for hyphens.
313
+ command_name_joined = command_name_words.join("-")
314
+ @name_args.reject! { |name_arg| command_name_joined == name_arg }
315
+
316
+ if config[:help]
317
+ msg opt_parser
318
+ exit 1
319
+ end
320
+
321
+ # Grab a copy before config merge occurs, so that we can later identify
322
+ # whare a given config value is sourced from.
323
+ @original_config = config.dup
324
+
325
+ # copy Mixlib::CLI over so that it can be configured in config.rb/knife.rb
326
+ # config file
327
+ Chef::Config[:verbosity] = config[:verbosity] if config[:verbosity]
328
+ end
329
+
330
+ def parse_options(args)
331
+ super
332
+ rescue OptionParser::InvalidOption => e
333
+ puts "Error: " + e.to_s
334
+ show_usage
335
+ exit(1)
336
+ end
337
+
338
+ # keys from mixlib-cli options
339
+ def cli_keys
340
+ self.class.options.keys
341
+ end
342
+
343
+ # extracts the settings from the Chef::Config[:knife] sub-hash that correspond
344
+ # to knife cli options -- in preparation for merging config values with cli values
345
+ #
346
+ # NOTE: due to weirdness in mixlib-config #has_key? is only true if the value has
347
+ # been set by the user -- the Chef::Config defaults return #has_key?() of false and
348
+ # this code DEPENDS on that functionality since applying the default values in
349
+ # Chef::Config[:knife] would break the defaults in the cli that we would otherwise
350
+ # overwrite.
351
+ def config_file_settings
352
+ cli_keys.each_with_object({}) do |key, memo|
353
+ if Chef::Config[:knife].key?(key)
354
+ memo[key] = Chef::Config[:knife][key]
355
+ end
356
+ end
357
+ end
358
+
359
+ # config is merged in this order (inverse of precedence)
360
+ # default_config - mixlib-cli defaults (accessor from the mixin)
361
+ # config_file_settings - Chef::Config[:knife] sub-hash
362
+ # config - mixlib-cli settings (accessor from the mixin)
363
+ def merge_configs
364
+ # Update our original_config - if someone has created a knife command
365
+ # instance directly, they are likely ot have set cmd.config values directly
366
+ # as well, at which point our saved original config is no longer up to date.
367
+ @original_config = config.dup
368
+ # other code may have a handle to the config object, so use Hash#replace to deliberately
369
+ # update-in-place.
370
+ config.replace(default_config.merge(config_file_settings).merge(config))
371
+ end
372
+
373
+ #
374
+ # Determine the source of a given configuration key
375
+ #
376
+ # @argument key [Symbol] a configuration key
377
+ # @return [Symbol,NilClass] return the source of the config key,
378
+ # one of:
379
+ # - :cli - this was explicitly provided on the CLI
380
+ # - :config - this came from Chef::Config[:knife]
381
+ # - :cli_default - came from a declared CLI `option`'s `default` value.
382
+ # - nil - if the key could not be found in any source.
383
+ # This can happen when it is invalid, or has been
384
+ # set directly into #config without then calling #merge_config
385
+ def config_source(key)
386
+ return :cli if @original_config.include? key
387
+ return :config if config_file_settings.key? key
388
+ return :cli_default if default_config.include? key
389
+ nil
390
+ end
391
+
392
+ # Catch-all method that does any massaging needed for various config
393
+ # components, such as expanding file paths and converting verbosity level
394
+ # into log level.
395
+ def apply_computed_config
396
+ Chef::Config[:color] = config[:color]
397
+
398
+ case Chef::Config[:verbosity]
399
+ when 0, nil
400
+ Chef::Config[:log_level] = :warn
401
+ when 1
402
+ Chef::Config[:log_level] = :info
403
+ when 2
404
+ Chef::Config[:log_level] = :debug
405
+ else
406
+ Chef::Config[:log_level] = :trace
407
+ end
408
+
409
+ Chef::Config[:log_level] = :trace if ENV["KNIFE_DEBUG"]
410
+
411
+ Chef::Config[:node_name] = config[:node_name] if config[:node_name]
412
+ Chef::Config[:client_key] = config[:client_key] if config[:client_key]
413
+ Chef::Config[:chef_server_url] = config[:chef_server_url] if config[:chef_server_url]
414
+ Chef::Config[:environment] = config[:environment] if config[:environment]
415
+
416
+ Chef::Config.local_mode = config[:local_mode] if config.key?(:local_mode)
417
+
418
+ Chef::Config.listen = config[:listen] if config.key?(:listen)
419
+
420
+ if Chef::Config.local_mode && !Chef::Config.key?(:cookbook_path) && !Chef::Config.key?(:chef_repo_path)
421
+ Chef::Config.chef_repo_path = Chef::Config.find_chef_repo_path(Dir.pwd)
422
+ end
423
+ Chef::Config.chef_zero.host = config[:chef_zero_host] if config[:chef_zero_host]
424
+ Chef::Config.chef_zero.port = config[:chef_zero_port] if config[:chef_zero_port]
425
+
426
+ # Expand a relative path from the config directory. Config from command
427
+ # line should already be expanded, and absolute paths will be unchanged.
428
+ if Chef::Config[:client_key] && config[:config_file]
429
+ Chef::Config[:client_key] = File.expand_path(Chef::Config[:client_key], File.dirname(config[:config_file]))
430
+ end
431
+
432
+ Mixlib::Log::Formatter.show_time = false
433
+ Chef::Log.init(Chef::Config[:log_location])
434
+ Chef::Log.level(Chef::Config[:log_level] || :error)
435
+ end
436
+
437
+ def configure_chef
438
+ # knife needs to send logger output to STDERR by default
439
+ Chef::Config[:log_location] = STDERR
440
+ config_loader = self.class.load_config(config[:config_file], config[:profile])
441
+ config[:config_file] = config_loader.config_location
442
+
443
+ # For CLI options like `--config-option key=value`. These have to get
444
+ # parsed and applied separately.
445
+ extra_config_options = config.delete(:config_option)
446
+
447
+ merge_configs
448
+ apply_computed_config
449
+
450
+ # This has to be after apply_computed_config so that Mixlib::Log is configured
451
+ Chef::Log.info("Using configuration from #{config[:config_file]}") if config[:config_file]
452
+
453
+ begin
454
+ Chef::Config.apply_extra_config_options(extra_config_options)
455
+ rescue ChefConfig::UnparsableConfigOption => e
456
+ ui.error e.message
457
+ show_usage
458
+ exit(1)
459
+ end
460
+
461
+ Chef::Config.export_proxies
462
+ end
463
+
464
+ def show_usage
465
+ stdout.puts("USAGE: " + opt_parser.to_s)
466
+ end
467
+
468
+ def run_with_pretty_exceptions(raise_exception = false)
469
+ unless respond_to?(:run)
470
+ ui.error "You need to add a #run method to your knife command before you can use it"
471
+ end
472
+ enforce_path_sanity
473
+ maybe_setup_fips
474
+ Chef::LocalMode.with_server_connectivity do
475
+ run
476
+ end
477
+ rescue Exception => e
478
+ raise if raise_exception || ( Chef::Config[:verbosity] && Chef::Config[:verbosity] >= 2 )
479
+ humanize_exception(e)
480
+ exit 100
481
+ end
482
+
483
+ def humanize_exception(e)
484
+ case e
485
+ when SystemExit
486
+ raise # make sure exit passes through.
487
+ when Net::HTTPClientException, Net::HTTPFatalError
488
+ humanize_http_exception(e)
489
+ when OpenSSL::SSL::SSLError
490
+ ui.error "Could not establish a secure connection to the server."
491
+ ui.info "Use `knife ssl check` to troubleshoot your SSL configuration."
492
+ ui.info "If your server uses a self-signed certificate, you can use"
493
+ ui.info "`knife ssl fetch` to make knife trust the server's certificates."
494
+ ui.info ""
495
+ ui.info "Original Exception: #{e.class.name}: #{e.message}"
496
+ when Errno::ECONNREFUSED, Timeout::Error, Errno::ETIMEDOUT, SocketError
497
+ ui.error "Network Error: #{e.message}"
498
+ ui.info "Check your knife configuration and network settings"
499
+ when NameError, NoMethodError
500
+ ui.error "knife encountered an unexpected error"
501
+ ui.info "This may be a bug in the '#{self.class.common_name}' knife command or plugin"
502
+ ui.info "Please collect the output of this command with the `-VVV` option before filing a bug report."
503
+ ui.info "Exception: #{e.class.name}: #{e.message}"
504
+ when Chef::Exceptions::PrivateKeyMissing
505
+ ui.error "Your private key could not be loaded from #{api_key}"
506
+ ui.info "Check your configuration file and ensure that your private key is readable"
507
+ when Chef::Exceptions::InvalidRedirect
508
+ ui.error "Invalid Redirect: #{e.message}"
509
+ ui.info "Change your server location in config.rb/knife.rb to the server's FQDN to avoid unwanted redirections."
510
+ else
511
+ ui.error "#{e.class.name}: #{e.message}"
512
+ end
513
+ end
514
+
515
+ def humanize_http_exception(e)
516
+ response = e.response
517
+ case response
518
+ when Net::HTTPUnauthorized
519
+ ui.error "Failed to authenticate to #{server_url} as #{username} with key #{api_key}"
520
+ ui.info "Response: #{format_rest_error(response)}"
521
+ when Net::HTTPForbidden
522
+ ui.error "You authenticated successfully to #{server_url} as #{username} but you are not authorized for this action."
523
+ proxy_env_vars = ENV.to_hash.keys.map(&:downcase) & %w{http_proxy https_proxy ftp_proxy socks_proxy no_proxy}
524
+ unless proxy_env_vars.empty?
525
+ ui.error "There are proxy servers configured, your server url may need to be added to NO_PROXY."
526
+ end
527
+ ui.info "Response: #{format_rest_error(response)}"
528
+ when Net::HTTPBadRequest
529
+ ui.error "The data in your request was invalid"
530
+ ui.info "Response: #{format_rest_error(response)}"
531
+ when Net::HTTPNotFound
532
+ ui.error "The object you are looking for could not be found"
533
+ ui.info "Response: #{format_rest_error(response)}"
534
+ when Net::HTTPInternalServerError
535
+ ui.error "internal server error"
536
+ ui.info "Response: #{format_rest_error(response)}"
537
+ when Net::HTTPBadGateway
538
+ ui.error "bad gateway"
539
+ ui.info "Response: #{format_rest_error(response)}"
540
+ when Net::HTTPServiceUnavailable
541
+ ui.error "Service temporarily unavailable"
542
+ ui.info "Response: #{format_rest_error(response)}"
543
+ when Net::HTTPNotAcceptable
544
+ version_header = Chef::JSONCompat.from_json(response["x-ops-server-api-version"])
545
+ client_api_version = version_header["request_version"]
546
+ min_server_version = version_header["min_version"]
547
+ max_server_version = version_header["max_version"]
548
+ ui.error "The API version that Knife is using is not supported by the server you sent this request to."
549
+ ui.info "The request that Knife sent was using API version #{client_api_version}."
550
+ ui.info "The server you sent the request to supports a min API verson of #{min_server_version} and a max API version of #{max_server_version}."
551
+ ui.info "Please either update your #{Chef::Dist::PRODUCT} or the server to be a compatible set."
552
+ else
553
+ ui.error response.message
554
+ ui.info "Response: #{format_rest_error(response)}"
555
+ end
556
+ end
557
+
558
+ def username
559
+ Chef::Config[:node_name]
560
+ end
561
+
562
+ def api_key
563
+ Chef::Config[:client_key]
564
+ end
565
+
566
+ # Parses JSON from the error response sent by Chef Server and returns the
567
+ # error message
568
+ #--
569
+ # TODO: this code belongs in Chef::REST
570
+ def format_rest_error(response)
571
+ Array(Chef::JSONCompat.from_json(response.body)["error"]).join("; ")
572
+ rescue Exception
573
+ response.body
574
+ end
575
+
576
+ # FIXME: yard with @yield
577
+ def create_object(object, pretty_name = nil, object_class: nil)
578
+ output = if object_class
579
+ edit_data(object, object_class: object_class)
580
+ else
581
+ edit_hash(object)
582
+ end
583
+
584
+ if Kernel.block_given?
585
+ output = yield(output)
586
+ else
587
+ output.save
588
+ end
589
+
590
+ pretty_name ||= output
591
+
592
+ msg("Created #{pretty_name}")
593
+
594
+ output(output) if config[:print_after]
595
+ end
596
+
597
+ # FIXME: yard with @yield
598
+ def delete_object(klass, name, delete_name = nil)
599
+ confirm("Do you really want to delete #{name}")
600
+
601
+ if Kernel.block_given?
602
+ object = yield
603
+ else
604
+ object = klass.load(name)
605
+ object.destroy
606
+ end
607
+
608
+ output(format_for_display(object)) if config[:print_after]
609
+
610
+ obj_name = delete_name ? "#{delete_name}[#{name}]" : object
611
+ msg("Deleted #{obj_name}")
612
+ end
613
+
614
+ # helper method for testing if a field exists
615
+ # and returning the usage and proper error if not
616
+ def test_mandatory_field(field, fieldname)
617
+ if field.nil?
618
+ show_usage
619
+ ui.fatal("You must specify a #{fieldname}")
620
+ exit 1
621
+ end
622
+ end
623
+
624
+ def rest
625
+ @rest ||= begin
626
+ require_relative "server_api"
627
+ Chef::ServerAPI.new(Chef::Config[:chef_server_url])
628
+ end
629
+ end
630
+
631
+ def noauth_rest
632
+ @rest ||= begin
633
+ require_relative "http/simple_json"
634
+ Chef::HTTP::SimpleJSON.new(Chef::Config[:chef_server_url])
635
+ end
636
+ end
637
+
638
+ def server_url
639
+ Chef::Config[:chef_server_url]
640
+ end
641
+
642
+ def maybe_setup_fips
643
+ if !config[:fips].nil?
644
+ Chef::Config[:fips] = config[:fips]
645
+ end
646
+ Chef::Config.init_openssl
647
+ end
648
+ end
649
+ end