chef 16.0.257-universal-mingw32 → 16.2.44-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 (391) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/README.md +3 -3
  4. data/Rakefile +44 -16
  5. data/chef.gemspec +4 -4
  6. data/distro/powershell/chef/chef.psm1 +3 -3
  7. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  8. data/lib/chef/application/apply.rb +2 -2
  9. data/lib/chef/application/base.rb +1 -1
  10. data/lib/chef/application/client.rb +1 -1
  11. data/lib/chef/application/exit_code.rb +2 -2
  12. data/lib/chef/application/windows_service_manager.rb +1 -1
  13. data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
  14. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  18. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  20. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  21. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  22. data/lib/chef/chef_fs/path_utils.rb +4 -4
  23. data/lib/chef/cookbook/chefignore.rb +1 -1
  24. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  25. data/lib/chef/cookbook/metadata.rb +2 -2
  26. data/lib/chef/cookbook_loader.rb +1 -1
  27. data/lib/chef/cookbook_manifest.rb +1 -1
  28. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  29. data/lib/chef/cookbook_version.rb +7 -7
  30. data/lib/chef/data_bag.rb +4 -4
  31. data/lib/chef/data_collector.rb +1 -1
  32. data/lib/chef/data_collector/error_handlers.rb +1 -1
  33. data/lib/chef/decorator/lazy_array.rb +2 -2
  34. data/lib/chef/deprecated.rb +5 -1
  35. data/lib/chef/digester.rb +4 -4
  36. data/lib/chef/dsl/declare_resource.rb +1 -1
  37. data/lib/chef/dsl/platform_introspection.rb +1 -1
  38. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  39. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  40. data/lib/chef/file_access_control.rb +1 -1
  41. data/lib/chef/formatters/base.rb +1 -1
  42. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  43. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  44. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  45. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  46. data/lib/chef/http.rb +18 -3
  47. data/lib/chef/http/decompressor.rb +1 -1
  48. data/lib/chef/http/http_request.rb +1 -1
  49. data/lib/chef/http/json_output.rb +1 -1
  50. data/lib/chef/http/ssl_policies.rb +18 -0
  51. data/lib/chef/json_compat.rb +1 -1
  52. data/lib/chef/key.rb +1 -1
  53. data/lib/chef/knife.rb +2 -2
  54. data/lib/chef/knife/bootstrap.rb +13 -16
  55. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  56. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  57. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  58. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  59. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  60. data/lib/chef/knife/config_get.rb +1 -1
  61. data/lib/chef/knife/cookbook_delete.rb +1 -1
  62. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  63. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  64. data/lib/chef/knife/core/node_presenter.rb +1 -1
  65. data/lib/chef/knife/core/status_presenter.rb +1 -1
  66. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  67. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -3
  68. data/lib/chef/knife/data_bag_create.rb +1 -1
  69. data/lib/chef/knife/environment_compare.rb +1 -1
  70. data/lib/chef/knife/key_create_base.rb +1 -1
  71. data/lib/chef/knife/key_edit_base.rb +1 -1
  72. data/lib/chef/knife/list.rb +1 -1
  73. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  74. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  75. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  76. data/lib/chef/knife/ssh.rb +2 -2
  77. data/lib/chef/knife/supermarket_install.rb +1 -1
  78. data/lib/chef/knife/supermarket_share.rb +1 -1
  79. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  80. data/lib/chef/knife/{user_invite_recind.rb → user_invite_rescind.rb} +6 -6
  81. data/lib/chef/knife/yaml_convert.rb +2 -2
  82. data/lib/chef/log.rb +1 -1
  83. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  84. data/lib/chef/mixin/checksum.rb +0 -1
  85. data/lib/chef/mixin/create_path.rb +8 -8
  86. data/lib/chef/mixin/openssl_helper.rb +4 -4
  87. data/lib/chef/mixin/properties.rb +4 -2
  88. data/lib/chef/mixin/securable.rb +2 -2
  89. data/lib/chef/mixin/shell_out.rb +1 -1
  90. data/lib/chef/node/attribute.rb +2 -2
  91. data/lib/chef/node/immutable_collections.rb +1 -1
  92. data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
  93. data/lib/chef/policy_builder/policyfile.rb +1 -1
  94. data/lib/chef/powershell.rb +1 -1
  95. data/lib/chef/property.rb +2 -2
  96. data/lib/chef/provider.rb +3 -3
  97. data/lib/chef/provider/batch.rb +3 -10
  98. data/lib/chef/provider/cron.rb +2 -14
  99. data/lib/chef/provider/directory.rb +1 -1
  100. data/lib/chef/provider/execute.rb +3 -2
  101. data/lib/chef/provider/file.rb +1 -1
  102. data/lib/chef/provider/group/dscl.rb +2 -2
  103. data/lib/chef/provider/group/windows.rb +1 -1
  104. data/lib/chef/provider/ifconfig.rb +7 -7
  105. data/lib/chef/provider/launchd.rb +28 -32
  106. data/lib/chef/provider/mount/aix.rb +1 -1
  107. data/lib/chef/provider/mount/windows.rb +2 -2
  108. data/lib/chef/provider/noop.rb +1 -1
  109. data/lib/chef/provider/package/cab.rb +1 -1
  110. data/lib/chef/provider/package/chocolatey.rb +1 -1
  111. data/lib/chef/provider/package/dpkg.rb +1 -1
  112. data/lib/chef/provider/package/freebsd/base.rb +2 -1
  113. data/lib/chef/provider/package/homebrew.rb +1 -1
  114. data/lib/chef/provider/package/macports.rb +0 -2
  115. data/lib/chef/provider/package/openbsd.rb +1 -1
  116. data/lib/chef/provider/package/portage.rb +3 -2
  117. data/lib/chef/provider/package/powershell.rb +6 -2
  118. data/lib/chef/provider/package/rubygems.rb +3 -3
  119. data/lib/chef/provider/package/snap.rb +96 -27
  120. data/lib/chef/provider/package/windows.rb +27 -52
  121. data/lib/chef/provider/package/windows/msi.rb +3 -3
  122. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  123. data/lib/chef/provider/package/yum.rb +1 -1
  124. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  125. data/lib/chef/provider/powershell_script.rb +11 -15
  126. data/lib/chef/provider/remote_directory.rb +2 -2
  127. data/lib/chef/provider/remote_file/http.rb +4 -1
  128. data/lib/chef/provider/script.rb +4 -75
  129. data/lib/chef/provider/service/arch.rb +2 -2
  130. data/lib/chef/provider/service/debian.rb +2 -2
  131. data/lib/chef/provider/service/macosx.rb +13 -2
  132. data/lib/chef/provider/service/openbsd.rb +4 -4
  133. data/lib/chef/provider/service/redhat.rb +1 -1
  134. data/lib/chef/provider/service/simple.rb +3 -3
  135. data/lib/chef/provider/service/upstart.rb +1 -1
  136. data/lib/chef/provider/service/windows.rb +1 -1
  137. data/lib/chef/provider/subversion.rb +2 -2
  138. data/lib/chef/provider/user/aix.rb +1 -1
  139. data/lib/chef/provider/user/dscl.rb +7 -7
  140. data/lib/chef/provider/user/linux.rb +3 -3
  141. data/lib/chef/provider/user/mac.rb +15 -11
  142. data/lib/chef/provider/windows_script.rb +87 -25
  143. data/lib/chef/provider/windows_task.rb +5 -3
  144. data/lib/chef/provider/zypper_repository.rb +30 -10
  145. data/lib/chef/resource.rb +25 -14
  146. data/lib/chef/resource/alternatives.rb +65 -4
  147. data/lib/chef/resource/apt_package.rb +31 -2
  148. data/lib/chef/resource/apt_preference.rb +34 -5
  149. data/lib/chef/resource/apt_repository.rb +22 -15
  150. data/lib/chef/resource/apt_update.rb +6 -4
  151. data/lib/chef/resource/archive_file.rb +33 -12
  152. data/lib/chef/resource/bash.rb +1 -2
  153. data/lib/chef/resource/batch.rb +5 -3
  154. data/lib/chef/resource/bff_package.rb +1 -1
  155. data/lib/chef/resource/breakpoint.rb +1 -1
  156. data/lib/chef/resource/build_essential.rb +8 -4
  157. data/lib/chef/resource/cab_package.rb +1 -1
  158. data/lib/chef/resource/chef_client_cron.rb +12 -9
  159. data/lib/chef/resource/chef_client_scheduled_task.rb +22 -7
  160. data/lib/chef/resource/chef_client_systemd_timer.rb +10 -7
  161. data/lib/chef/resource/chef_gem.rb +6 -2
  162. data/lib/chef/resource/chef_handler.rb +3 -3
  163. data/lib/chef/resource/chef_sleep.rb +7 -4
  164. data/lib/chef/resource/chef_vault_secret.rb +4 -4
  165. data/lib/chef/resource/chocolatey_config.rb +5 -3
  166. data/lib/chef/resource/chocolatey_feature.rb +5 -3
  167. data/lib/chef/resource/chocolatey_package.rb +5 -3
  168. data/lib/chef/resource/chocolatey_source.rb +5 -3
  169. data/lib/chef/resource/cookbook_file.rb +3 -2
  170. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  171. data/lib/chef/resource/cron/cron.rb +46 -0
  172. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +28 -94
  173. data/lib/chef/resource/cron_access.rb +17 -6
  174. data/lib/chef/resource/csh.rb +1 -2
  175. data/lib/chef/resource/directory.rb +1 -1
  176. data/lib/chef/resource/dmg_package.rb +18 -15
  177. data/lib/chef/resource/dnf_package.rb +1 -1
  178. data/lib/chef/resource/dpkg_package.rb +1 -1
  179. data/lib/chef/resource/execute.rb +479 -9
  180. data/lib/chef/resource/file.rb +11 -8
  181. data/lib/chef/resource/freebsd_package.rb +2 -2
  182. data/lib/chef/resource/gem_package.rb +6 -6
  183. data/lib/chef/resource/group.rb +1 -1
  184. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  185. data/lib/chef/resource/homebrew_cask.rb +1 -1
  186. data/lib/chef/resource/homebrew_package.rb +30 -1
  187. data/lib/chef/resource/homebrew_tap.rb +1 -1
  188. data/lib/chef/resource/homebrew_update.rb +107 -0
  189. data/lib/chef/resource/hostname.rb +11 -24
  190. data/lib/chef/resource/http_request.rb +1 -1
  191. data/lib/chef/resource/ifconfig.rb +7 -7
  192. data/lib/chef/resource/ips_package.rb +1 -1
  193. data/lib/chef/resource/kernel_module.rb +15 -2
  194. data/lib/chef/resource/ksh.rb +1 -1
  195. data/lib/chef/resource/launchd.rb +5 -5
  196. data/lib/chef/resource/link.rb +4 -4
  197. data/lib/chef/resource/locale.rb +4 -4
  198. data/lib/chef/resource/log.rb +1 -1
  199. data/lib/chef/resource/macos_userdefaults.rb +15 -10
  200. data/lib/chef/resource/macosx_service.rb +1 -1
  201. data/lib/chef/resource/macports_package.rb +1 -1
  202. data/lib/chef/resource/mdadm.rb +1 -1
  203. data/lib/chef/resource/mount.rb +2 -2
  204. data/lib/chef/resource/msu_package.rb +2 -2
  205. data/lib/chef/resource/ohai.rb +1 -1
  206. data/lib/chef/resource/ohai_hint.rb +1 -1
  207. data/lib/chef/resource/openbsd_package.rb +1 -1
  208. data/lib/chef/resource/openssl_dhparam.rb +1 -1
  209. data/lib/chef/resource/openssl_ec_private_key.rb +1 -1
  210. data/lib/chef/resource/openssl_ec_public_key.rb +1 -1
  211. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  212. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -1
  213. data/lib/chef/resource/openssl_x509_certificate.rb +1 -1
  214. data/lib/chef/resource/openssl_x509_crl.rb +1 -1
  215. data/lib/chef/resource/openssl_x509_request.rb +1 -1
  216. data/lib/chef/resource/osx_profile.rb +1 -1
  217. data/lib/chef/resource/package.rb +1 -1
  218. data/lib/chef/resource/pacman_package.rb +1 -1
  219. data/lib/chef/resource/paludis_package.rb +1 -1
  220. data/lib/chef/resource/perl.rb +1 -2
  221. data/lib/chef/resource/plist.rb +24 -5
  222. data/lib/chef/resource/portage_package.rb +1 -1
  223. data/lib/chef/resource/powershell_package.rb +1 -1
  224. data/lib/chef/resource/powershell_package_source.rb +1 -1
  225. data/lib/chef/resource/powershell_script.rb +5 -3
  226. data/lib/chef/resource/python.rb +1 -2
  227. data/lib/chef/resource/reboot.rb +1 -1
  228. data/lib/chef/resource/registry_key.rb +1 -1
  229. data/lib/chef/resource/remote_directory.rb +1 -1
  230. data/lib/chef/resource/remote_file.rb +26 -11
  231. data/lib/chef/resource/rhsm_errata.rb +1 -3
  232. data/lib/chef/resource/rhsm_errata_level.rb +1 -1
  233. data/lib/chef/resource/rhsm_register.rb +1 -2
  234. data/lib/chef/resource/rhsm_repo.rb +1 -2
  235. data/lib/chef/resource/rhsm_subscription.rb +1 -3
  236. data/lib/chef/resource/route.rb +1 -1
  237. data/lib/chef/resource/rpm_package.rb +5 -2
  238. data/lib/chef/resource/ruby.rb +1 -2
  239. data/lib/chef/resource/ruby_block.rb +1 -4
  240. data/lib/chef/resource/scm/_scm.rb +4 -3
  241. data/lib/chef/resource/scm/git.rb +2 -2
  242. data/lib/chef/resource/scm/subversion.rb +2 -2
  243. data/lib/chef/resource/script.rb +1 -1
  244. data/lib/chef/resource/service.rb +1 -1
  245. data/lib/chef/resource/smartos_package.rb +1 -1
  246. data/lib/chef/resource/snap_package.rb +1 -1
  247. data/lib/chef/resource/solaris_package.rb +1 -1
  248. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  249. data/lib/chef/resource/sudo.rb +4 -4
  250. data/lib/chef/resource/swap_file.rb +2 -2
  251. data/lib/chef/resource/sysctl.rb +61 -2
  252. data/lib/chef/resource/systemd_unit.rb +2 -2
  253. data/lib/chef/resource/template.rb +1 -1
  254. data/lib/chef/resource/timezone.rb +1 -1
  255. data/lib/chef/resource/user.rb +2 -2
  256. data/lib/chef/resource/user_ulimit.rb +24 -22
  257. data/lib/chef/resource/windows_ad_join.rb +31 -2
  258. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  259. data/lib/chef/resource/windows_auto_run.rb +13 -2
  260. data/lib/chef/resource/windows_certificate.rb +28 -2
  261. data/lib/chef/resource/windows_dfs_folder.rb +1 -1
  262. data/lib/chef/resource/windows_dfs_namespace.rb +1 -1
  263. data/lib/chef/resource/windows_dfs_server.rb +2 -2
  264. data/lib/chef/resource/windows_env.rb +10 -1
  265. data/lib/chef/resource/windows_feature.rb +57 -2
  266. data/lib/chef/resource/windows_feature_dism.rb +15 -2
  267. data/lib/chef/resource/windows_feature_powershell.rb +29 -2
  268. data/lib/chef/resource/windows_firewall_rule.rb +11 -7
  269. data/lib/chef/resource/windows_font.rb +13 -4
  270. data/lib/chef/resource/windows_package.rb +66 -6
  271. data/lib/chef/resource/windows_pagefile.rb +32 -4
  272. data/lib/chef/resource/windows_path.rb +18 -1
  273. data/lib/chef/resource/windows_printer.rb +26 -6
  274. data/lib/chef/resource/windows_printer_port.rb +29 -1
  275. data/lib/chef/resource/windows_script.rb +2 -16
  276. data/lib/chef/resource/windows_security_policy.rb +47 -16
  277. data/lib/chef/resource/windows_service.rb +1 -1
  278. data/lib/chef/resource/windows_share.rb +23 -3
  279. data/lib/chef/resource/windows_shortcut.rb +13 -3
  280. data/lib/chef/resource/windows_task.rb +143 -29
  281. data/lib/chef/resource/windows_uac.rb +20 -1
  282. data/lib/chef/resource/windows_user_privilege.rb +45 -3
  283. data/lib/chef/resource/windows_workgroup.rb +19 -3
  284. data/lib/chef/resource/yum_package.rb +88 -6
  285. data/lib/chef/resource/yum_repository.rb +36 -19
  286. data/lib/chef/resource/zypper_package.rb +29 -3
  287. data/lib/chef/resource/zypper_repository.rb +17 -5
  288. data/lib/chef/resource_inspector.rb +5 -4
  289. data/lib/chef/resources.rb +4 -2
  290. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  291. data/lib/chef/scan_access_control.rb +1 -1
  292. data/lib/chef/search/query.rb +1 -1
  293. data/lib/chef/shell/ext.rb +1 -1
  294. data/lib/chef/util/diff.rb +2 -2
  295. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  296. data/lib/chef/util/windows/net_user.rb +1 -1
  297. data/lib/chef/util/windows/volume.rb +1 -1
  298. data/lib/chef/version.rb +1 -1
  299. data/lib/chef/win32/api.rb +2 -2
  300. data/lib/chef/win32/api/error.rb +3 -1
  301. data/lib/chef/win32/api/file.rb +18 -18
  302. data/lib/chef/win32/api/net.rb +1 -0
  303. data/lib/chef/win32/file.rb +1 -1
  304. data/lib/chef/win32/mutex.rb +1 -1
  305. data/lib/chef/win32/net.rb +1 -0
  306. data/lib/chef/win32/process.rb +2 -2
  307. data/lib/chef/win32/registry.rb +2 -2
  308. data/lib/chef/win32/security.rb +1 -1
  309. data/lib/chef/win32/security/sid.rb +4 -4
  310. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  311. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  312. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  313. data/spec/functional/resource/cron_spec.rb +10 -0
  314. data/spec/functional/resource/dnf_package_spec.rb +2 -2
  315. data/spec/functional/resource/git_spec.rb +6 -6
  316. data/spec/functional/resource/launchd_spec.rb +232 -0
  317. data/spec/functional/resource/link_spec.rb +3 -3
  318. data/spec/functional/resource/remote_file_spec.rb +3 -3
  319. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  320. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  321. data/spec/functional/resource/windows_task_spec.rb +12 -12
  322. data/spec/integration/knife/raw_spec.rb +4 -4
  323. data/spec/integration/knife/redirection_spec.rb +2 -2
  324. data/spec/support/chef_helpers.rb +1 -1
  325. data/spec/support/platform_helpers.rb +1 -14
  326. data/spec/support/platforms/win32/spec_service.rb +1 -1
  327. data/spec/support/shared/functional/execute_resource.rb +1 -1
  328. data/spec/support/shared/functional/file_resource.rb +1 -1
  329. data/spec/support/shared/functional/http.rb +2 -2
  330. data/spec/support/shared/functional/windows_script.rb +1 -1
  331. data/spec/support/shared/unit/execute_resource.rb +1 -1
  332. data/spec/support/shared/unit/mock_shellout.rb +1 -1
  333. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  334. data/spec/unit/application_spec.rb +7 -0
  335. data/spec/unit/data_bag_spec.rb +1 -1
  336. data/spec/unit/file_access_control_spec.rb +1 -1
  337. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  338. data/spec/unit/knife/bootstrap_spec.rb +2 -2
  339. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  340. data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
  341. data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
  342. data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
  343. data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
  344. data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
  345. data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
  346. data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
  347. data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
  348. data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
  349. data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
  350. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  351. data/spec/unit/mixin/shell_out_spec.rb +25 -31
  352. data/spec/unit/mixin/user_context_spec.rb +1 -9
  353. data/spec/unit/node/attribute_spec.rb +1 -1
  354. data/spec/unit/property_spec.rb +1 -1
  355. data/spec/unit/provider/apt_repository_spec.rb +27 -27
  356. data/spec/unit/provider/batch_spec.rb +130 -0
  357. data/spec/unit/provider/cron_spec.rb +9 -49
  358. data/spec/unit/provider/git_spec.rb +3 -3
  359. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  360. data/spec/unit/provider/launchd_spec.rb +8 -50
  361. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  362. data/spec/unit/provider/package/msu_spec.rb +3 -3
  363. data/spec/unit/provider/package/portage_spec.rb +2 -2
  364. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  365. data/spec/unit/provider/package/snap_spec.rb +1 -1
  366. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  367. data/spec/unit/provider/script_spec.rb +20 -110
  368. data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
  369. data/spec/unit/provider/zypper_repository_spec.rb +75 -25
  370. data/spec/unit/provider_resolver_spec.rb +11 -11
  371. data/spec/unit/resource/archive_file_spec.rb +11 -2
  372. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  373. data/spec/unit/resource/cron_spec.rb +2 -2
  374. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  375. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  376. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  377. data/spec/unit/resource/timezone_spec.rb +1 -1
  378. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  379. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  380. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  381. data/spec/unit/resource/windows_package_spec.rb +10 -0
  382. data/spec/unit/resource/windows_task_spec.rb +1 -1
  383. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  384. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  385. data/spec/unit/resource_spec.rb +67 -1
  386. data/spec/unit/run_context_spec.rb +1 -1
  387. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  388. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  389. data/spec/unit/win32/registry_spec.rb +1 -1
  390. metadata +28 -27
  391. data/lib/chef/resource/cron.rb +0 -157
@@ -56,7 +56,7 @@ class Chef::Knife::YamlConvert < Chef::Knife
56
56
  end
57
57
 
58
58
  # Unfortunately, per the YAML spec, comments are stripped when we load, so we lose them on conversion
59
- yaml_hash = ::YAML.safe_load(yaml_contents)
59
+ yaml_hash = ::YAML.safe_load(yaml_contents, permitted_classes: [Symbol])
60
60
  unless yaml_hash.is_a?(Hash) && yaml_hash.key?("resources")
61
61
  ui.fatal!("YAML recipe '#{source_file}' must contain a top-level 'resources' hash (YAML sequence), i.e. 'resources:'")
62
62
  end
@@ -81,7 +81,7 @@ class Chef::Knife::YamlConvert < Chef::Knife
81
81
 
82
82
  ruby_contents << "#{type} \"#{name}\" do"
83
83
  r.each do |k, v|
84
- ruby_contents << " #{k} \"#{v}\""
84
+ ruby_contents << " #{k} #{v.inspect}"
85
85
  end
86
86
  ruby_contents << "end\n"
87
87
  end
@@ -21,7 +21,7 @@ require "logger"
21
21
  require_relative "monologger"
22
22
  require_relative "exceptions"
23
23
  require "mixlib/log"
24
- require_relative "log/syslog" unless RUBY_PLATFORM =~ /mswin|mingw|windows/
24
+ require_relative "log/syslog" unless RUBY_PLATFORM.match?(/mswin|mingw|windows/)
25
25
  require_relative "log/winevt"
26
26
 
27
27
  class Chef
@@ -53,7 +53,7 @@ class Chef
53
53
  <<~EOH
54
54
  The reregister command only supports server API version 0.
55
55
  The server that received the request supports a min version of #{min_version} and a max version of #{max_version}.
56
- User keys are now managed via the key rotation commmands.
56
+ User keys are now managed via the key rotation commands.
57
57
  Please refer to the documentation on how to manage your keys via the key rotation commands:
58
58
  https://docs.chef.io/ctl_chef_server/#key-rotation
59
59
  EOH
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "digest/sha2" unless defined?(Digest::SHA2)
20
19
  require_relative "../digester"
21
20
 
22
21
  class Chef
@@ -53,14 +53,14 @@ class Chef
53
53
  private
54
54
 
55
55
  def create_dir(path)
56
- # When doing multithreaded downloads into the file cache, the following
57
- # interleaving raises an error here:
58
- #
59
- # thread1 thread2
60
- # File.directory?(create_path) <- false
61
- # File.directory?(create_path) <- false
62
- # Dir.mkdir(create_path)
63
- # Dir.mkdir(create_path) <- raises Errno::EEXIST
56
+ # When doing multithreaded downloads into the file cache, the following
57
+ # interleaving raises an error here:
58
+ #
59
+ # thread1 thread2
60
+ # File.directory?(create_path) <- false
61
+ # File.directory?(create_path) <- false
62
+ # Dir.mkdir(create_path)
63
+ # Dir.mkdir(create_path) <- raises Errno::EEXIST
64
64
  Chef::Log.trace("Creating directory #{path}")
65
65
  Dir.mkdir(path)
66
66
  rescue Errno::EEXIST
@@ -218,7 +218,7 @@ class Chef
218
218
  # Chef 12 backward compatibility
219
219
  ::OpenSSL::PKey::EC.send(:alias_method, :private?, :private_key?)
220
220
 
221
- request.sign(key, ::OpenSSL::Digest::SHA256.new)
221
+ request.sign(key, ::OpenSSL::Digest.new("SHA256"))
222
222
  request
223
223
  end
224
224
 
@@ -289,7 +289,7 @@ class Chef
289
289
  cert.add_extension ef.create_extension("authorityKeyIdentifier",
290
290
  "keyid:always,issuer:always")
291
291
 
292
- cert.sign(key, ::OpenSSL::Digest::SHA256.new)
292
+ cert.sign(key, ::OpenSSL::Digest.new("SHA256"))
293
293
  cert
294
294
  end
295
295
 
@@ -319,7 +319,7 @@ class Chef
319
319
  crl.add_extension ::OpenSSL::X509::Extension.new("crlNumber", ::OpenSSL::ASN1::Integer(1))
320
320
  crl.add_extension ef.create_extension("authorityKeyIdentifier",
321
321
  "keyid:always,issuer:always")
322
- crl.sign(ca_private_key, ::OpenSSL::Digest::SHA256.new)
322
+ crl.sign(ca_private_key, ::OpenSSL::Digest.new("SHA256"))
323
323
  crl
324
324
  end
325
325
 
@@ -398,7 +398,7 @@ class Chef
398
398
  ::OpenSSL::ASN1::Integer(get_next_crl_number(crl)))]
399
399
  crl.add_extension ef.create_extension("authorityKeyIdentifier",
400
400
  "keyid:always,issuer:always")
401
- crl.sign(ca_private_key, ::OpenSSL::Digest::SHA256.new)
401
+ crl.sign(ca_private_key, ::OpenSSL::Digest.new("SHA256"))
402
402
  crl
403
403
  end
404
404
 
@@ -264,7 +264,7 @@ class Chef
264
264
  end
265
265
 
266
266
  result = properties.values.select(&:identity?)
267
- # if there are no other identity properites set, then the name_property becomes the identity, or
267
+ # if there are no other identity properties set, then the name_property becomes the identity, or
268
268
  # failing that we use the actual name.
269
269
  if result.empty?
270
270
  result = name_property ? [ properties[name_property] ] : [ properties[:name] ]
@@ -340,6 +340,7 @@ class Chef
340
340
  # can also be overridden). Exclude has priority over include, although the caller is likely better
341
341
  # off doing the set arithmetic themselves for explicitness.
342
342
  #
343
+ # ```ruby
343
344
  # action :doit do
344
345
  # # use it inside a block
345
346
  # file "/etc/whatever.xyz" do
@@ -350,10 +351,11 @@ class Chef
350
351
  # r = declare_resource(:file, "etc/whatever.xyz")
351
352
  # r.copy_properties_from(new_resource, :owner, :group, :mode)
352
353
  # end
354
+ # ```
353
355
  #
354
356
  # @param other [Object] the other object (Chef::Resource) which implements the properties API
355
357
  # @param includes [Array<Symbol>] splat-args list of symbols of the properties to copy.
356
- # @param exclude [Array<Symbol>] list of symbosl of the properties to exclude.
358
+ # @param exclude [Array<Symbol>] list of symbols of the properties to exclude.
357
359
  # @return the self object the properties were copied to for method chaining
358
360
  #
359
361
  def copy_properties_from(other, *includes, exclude: [ :name ])
@@ -172,14 +172,14 @@ class Chef
172
172
  end
173
173
  end
174
174
 
175
- if RUBY_PLATFORM =~ /mswin|mingw|windows/
175
+ if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
176
176
  include WindowsSecurableAttributes
177
177
  end
178
178
 
179
179
  # Callback that fires when included; will extend the including class
180
180
  # with WindowsMacros and define #rights and #deny_rights on it.
181
181
  def self.included(including_class)
182
- if RUBY_PLATFORM =~ /mswin|mingw|windows/
182
+ if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
183
183
  including_class.extend(WindowsMacros)
184
184
  # create a default 'rights' attribute
185
185
  including_class.rights_attribute(:rights)
@@ -71,7 +71,7 @@ class Chef
71
71
  default_val = 900
72
72
  return options if options.key?(:timeout)
73
73
 
74
- # FIXME: need to nuke descendents tracker out of Chef::Provider so we can just define that class here without requiring the
74
+ # FIXME: need to nuke descendent tracker out of Chef::Provider so we can just define that class here without requiring the
75
75
  # world, and then just use symbol lookup
76
76
  if obj.class.ancestors.map(&:name).include?("Chef::Provider") && obj.respond_to?(:new_resource) && obj.new_resource.respond_to?(:timeout) && !options.key?(:timeout)
77
77
  options[:timeout] = obj.new_resource.timeout ? obj.new_resource.timeout.to_f : default_val
@@ -184,7 +184,7 @@ class Chef
184
184
  # return the role level override attribute component
185
185
  attr_reader :role_override
186
186
 
187
- # return the enviroment level override attribute component
187
+ # return the environment level override attribute component
188
188
  attr_reader :env_override
189
189
 
190
190
  # return the force override level attribute component
@@ -535,7 +535,7 @@ class Chef
535
535
  e
536
536
  end
537
537
 
538
- # Deep merge all attribute levels using hash-only merging between different precidence
538
+ # Deep merge all attribute levels using hash-only merging between different precedence
539
539
  # levels (so override arrays completely replace arrays set at any default level).
540
540
  #
541
541
  # The path allows for selectively deep-merging a subtree of the node object.
@@ -120,7 +120,7 @@ class Chef
120
120
  # ImmutableMash acts like a Mash (Hash that is indifferent to String or
121
121
  # Symbol keys), with some important exceptions:
122
122
  # * Methods that mutate state are overridden to raise an error instead.
123
- # * Methods that read from the collection are overriden so that they check
123
+ # * Methods that read from the collection are overridden so that they check
124
124
  # if the Chef::Node::Attribute has been modified since an instance of
125
125
  # this class was generated. An error is raised if the object detects that
126
126
  # it is stale.
@@ -19,9 +19,9 @@ class Chef
19
19
  class Node
20
20
  module Mixin
21
21
  module DeepMergeCache
22
- # Cache of deep merged values by top-level key. This is a simple hash which has keys that are the
23
- # top-level keys of the node object, and we save the computed deep-merge for that key here. There is
24
- # no cache of subtrees.
22
+ # Cache of deep merged values by top-level key. This is a simple hash which has keys that are the
23
+ # top-level keys of the node object, and we save the computed deep-merge for that key here. There is
24
+ # no cache of subtrees.
25
25
  attr_accessor :deep_merge_cache
26
26
 
27
27
  def initialize
@@ -31,10 +31,10 @@ class Chef
31
31
  @deep_merge_cache = {}
32
32
  end
33
33
 
34
- # Invalidate a key in the deep_merge_cache. If called with nil, or no arg, this will invalidate
35
- # the entire deep_merge cache. In the case of the user doing node.default['foo']['bar']['baz']=
36
- # that eventually results in a call to reset_cache('foo') here. A node.default=hash_thing call
37
- # must invalidate the entire cache and re-deep-merge the entire node object.
34
+ # Invalidate a key in the deep_merge_cache. If called with nil, or no arg, this will invalidate
35
+ # the entire deep_merge cache. In the case of the user doing node.default['foo']['bar']['baz']=
36
+ # that eventually results in a call to reset_cache('foo') here. A node.default=hash_thing call
37
+ # must invalidate the entire cache and re-deep-merge the entire node object.
38
38
  def reset_cache(path = nil)
39
39
  if path.nil?
40
40
  deep_merge_cache.clear
@@ -328,7 +328,7 @@ class Chef
328
328
  end
329
329
  end
330
330
 
331
- # Do some mimimal validation of the policyfile we fetched from the
331
+ # Do some minimal validation of the policyfile we fetched from the
332
332
  # server. Compatibility mode relies on using data bags to store policy
333
333
  # files; therefore no real validation will be performed server-side and
334
334
  # we need to make additional checks to ensure the data will be formatted
@@ -34,7 +34,7 @@ class Chef
34
34
  # @param script [String] script to run
35
35
  # @return [Object] output
36
36
  def initialize(script)
37
- raise "Chef::PowerShell can only be used on the Windows platform." unless RUBY_PLATFORM =~ /mswin|mingw32|windows/
37
+ raise "Chef::PowerShell can only be used on the Windows platform." unless RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
38
38
 
39
39
  exec(script)
40
40
  end
@@ -574,7 +574,7 @@ class Chef
574
574
  # be using the existing getter/setter to manipulate it instead.
575
575
  return unless instance_variable_name
576
576
 
577
- # Properties may override existing properties up the inheritance heirarchy, but
577
+ # Properties may override existing properties up the inheritance hierarchy, but
578
578
  # properties must not override inherited methods like Object#hash. When the Resource is
579
579
  # placed into the resource collection the ruby Hash object will call the
580
580
  # Object#hash method on the resource, and overriding that with a property will cause
@@ -702,7 +702,7 @@ class Chef
702
702
  # override their own properties.
703
703
  return false unless [ Object, BasicObject, Kernel, Chef::Resource ].include?(declared_in.instance_method(name).owner)
704
704
 
705
- # Allow top-level Chef::Resource proprties, such as `name`, to be overridden.
705
+ # Allow top-level Chef::Resource properties, such as `name`, to be overridden.
706
706
  # As of this writing, `name` is the only Chef::Resource property created with the
707
707
  # `property` definition, but this will allow for future properties to be extended
708
708
  # as needed.
@@ -152,7 +152,7 @@ class Chef
152
152
  new_resource.cookbook_name
153
153
  end
154
154
 
155
- # hook that subclasses can use to do lazy validation for where properties aren't flexibile enough
155
+ # hook that subclasses can use to do lazy validation for where properties aren't flexible enough
156
156
  def check_resource_semantics!; end
157
157
 
158
158
  # a simple placeholder method that will be called / raise if a resource tries to
@@ -167,7 +167,7 @@ class Chef
167
167
 
168
168
  def load_after_resource
169
169
  # This is a backwards compatible hack, custom resources properly wire up a new after_resource
170
- # via load_current_value. It is acceptible for old style resources that cannot be easily made
170
+ # via load_current_value. It is acceptable for old style resources that cannot be easily made
171
171
  # into custom resources to override this method and provide a proper after_resource.
172
172
  @after_resource = @new_resource
173
173
  end
@@ -190,7 +190,7 @@ class Chef
190
190
  def run_action(action = nil)
191
191
  @action = action unless action.nil?
192
192
 
193
- # hook that subclasses can use to do lazy validation for where properties aren't flexibile enough
193
+ # hook that subclasses can use to do lazy validation for where properties aren't flexible enough
194
194
  check_resource_semantics!
195
195
 
196
196
  # force the validation of required properties
@@ -24,22 +24,15 @@ class Chef
24
24
 
25
25
  provides :batch
26
26
 
27
- def initialize(new_resource, run_context)
28
- super(new_resource, run_context, ".bat")
29
- end
30
-
31
27
  def command
32
- basepath = is_forced_32bit ? wow64_directory : run_context.node["kernel"]["os_info"]["system_directory"]
33
-
34
28
  interpreter_path = Chef::Util::PathHelper.join(basepath, interpreter)
35
29
 
36
- "\"#{interpreter_path}\" #{flags} \"#{script_file.path}\""
30
+ "\"#{interpreter_path}\" #{new_resource.flags} /c \"#{script_file_path}\""
37
31
  end
38
32
 
39
- def flags
40
- new_resource.flags.nil? ? "/c" : new_resource.flags + " /c"
33
+ def script_extension
34
+ ".bat"
41
35
  end
42
-
43
36
  end
44
37
  end
45
38
  end
@@ -15,7 +15,6 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
-
19
18
  require_relative "../log"
20
19
  require_relative "../provider"
21
20
 
@@ -27,8 +26,6 @@ class Chef
27
26
 
28
27
  SPECIAL_TIME_VALUES = %i{reboot yearly annually monthly weekly daily midnight hourly}.freeze
29
28
  CRON_ATTRIBUTES = %i{minute hour day month weekday time command mailto path shell home environment}.freeze
30
- WEEKDAY_SYMBOLS = %i{sunday monday tuesday wednesday thursday friday saturday}.freeze
31
-
32
29
  CRON_PATTERN = %r{\A([-0-9*,/]+)\s([-0-9*,/]+)\s([-0-9*,/]+)\s([-0-9*,/]+|[a-zA-Z]{3})\s([-0-9*,/]+|[a-zA-Z]{3})\s(.*)}.freeze
33
30
  SPECIAL_PATTERN = /\A(@(#{SPECIAL_TIME_VALUES.join('|')}))\s(.*)/.freeze
34
31
  ENV_PATTERN = /\A(\S+)=(\S*)/.freeze
@@ -259,8 +256,8 @@ class Chef
259
256
  return "" if new_resource.time_out.empty?
260
257
 
261
258
  str = " timeout"
262
- str << " --preserve-status" if new_resource.time_out["preserve-status"].to_s.downcase == "true"
263
- str << " --foreground" if new_resource.time_out["foreground"].to_s.downcase == "true"
259
+ str << " --preserve-status" if new_resource.time_out["preserve-status"].to_s.casecmp("true") == 0
260
+ str << " --foreground" if new_resource.time_out["foreground"].to_s.casecmp("true") == 0
264
261
  str << " --kill-after #{new_resource.time_out["kill-after"]}" if new_resource.time_out["kill-after"]
265
262
  str << " --signal #{new_resource.time_out["signal"]}" if new_resource.time_out["signal"]
266
263
  str << " #{new_resource.time_out["duration"]};"
@@ -288,15 +285,6 @@ class Chef
288
285
 
289
286
  newcron.join("\n")
290
287
  end
291
-
292
- def weekday_in_crontab
293
- weekday_in_crontab = WEEKDAY_SYMBOLS.index(new_resource.weekday)
294
- if weekday_in_crontab.nil?
295
- new_resource.weekday
296
- else
297
- weekday_in_crontab.to_s
298
- end
299
- end
300
288
  end
301
289
  end
302
290
  end
@@ -142,7 +142,7 @@ class Chef
142
142
  converge_by("delete existing directory #{new_resource.path}") do
143
143
  if new_resource.recursive == true
144
144
  # we don't use rm_rf here because it masks all errors, including
145
- # IO errors or permission errors that would prvent the deletion
145
+ # IO errors or permission errors that would prevent the deletion
146
146
  FileUtils.rm_r(new_resource.path)
147
147
  logger.info("#{new_resource} deleted #{new_resource.path} recursively")
148
148
  else
@@ -27,7 +27,7 @@ class Chef
27
27
 
28
28
  provides :execute, target_mode: true
29
29
 
30
- def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env, :timeout
30
+ def_delegators :new_resource, :command, :returns, :environment, :user, :domain, :password, :group, :cwd, :umask, :creates, :elevated, :default_env, :timeout, :input
31
31
 
32
32
  def load_current_resource
33
33
  current_resource = Chef::Resource::Execute.new(new_resource.name)
@@ -49,7 +49,7 @@ class Chef
49
49
 
50
50
  converge_by("execute #{description}") do
51
51
  begin
52
- shell_out!(command, opts)
52
+ shell_out!(command, **opts)
53
53
  rescue Mixlib::ShellOut::ShellCommandFailed
54
54
  if sensitive?
55
55
  ex = Mixlib::ShellOut::ShellCommandFailed.new("Command execution failed. STDOUT/STDERR suppressed for sensitive resource")
@@ -91,6 +91,7 @@ class Chef
91
91
  opts[:group] = group if group
92
92
  opts[:cwd] = cwd if cwd
93
93
  opts[:umask] = umask if umask
94
+ opts[:input] = input if input
94
95
  opts[:default_env] = default_env
95
96
  opts[:log_level] = :info
96
97
  opts[:log_tag] = new_resource.to_s
@@ -334,7 +334,7 @@ class Chef
334
334
  end
335
335
 
336
336
  def do_validate_content
337
- if new_resource.checksum && tempfile && ( new_resource.checksum.downcase != tempfile_checksum )
337
+ if new_resource.checksum && tempfile && ( new_resource.checksum != tempfile_checksum )
338
338
  raise Chef::Exceptions::ChecksumMismatch.new(short_cksum(new_resource.checksum), short_cksum(tempfile_checksum))
339
339
  end
340
340
 
@@ -39,7 +39,7 @@ class Chef
39
39
  result = dscl(*args)
40
40
  return "" if ( args.first =~ /^delete/ ) && ( result[1].exitstatus != 0 )
41
41
  raise(Chef::Exceptions::Group, "dscl error: #{result.inspect}") unless result[1].exitstatus == 0
42
- raise(Chef::Exceptions::Group, "dscl error: #{result.inspect}") if result[2] =~ /No such key: /
42
+ raise(Chef::Exceptions::Group, "dscl error: #{result.inspect}") if /No such key: /.match?(result[2])
43
43
 
44
44
  result[2]
45
45
  end
@@ -77,7 +77,7 @@ class Chef
77
77
  gid = nil; next_gid_guess = 200
78
78
  groups_gids = safe_dscl("list", "/Groups", "gid")
79
79
  while next_gid_guess < search_limit + 200
80
- if groups_gids =~ Regexp.new("#{Regexp.escape(next_gid_guess.to_s)}\n")
80
+ if groups_gids&.match?(Regexp.new("#{Regexp.escape(next_gid_guess.to_s)}\n"))
81
81
  next_gid_guess += 1
82
82
  else
83
83
  gid = next_gid_guess
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require_relative "../user"
20
- if RUBY_PLATFORM =~ /mswin|mingw32|windows/
20
+ if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
21
21
  require_relative "../../util/windows/net_group"
22
22
  end
23
23
 
@@ -59,12 +59,12 @@ class Chef
59
59
 
60
60
  @net_tools_version = shell_out("ifconfig", "--version")
61
61
  @net_tools_version.stdout.each_line do |line|
62
- if line =~ /^net-tools (\d+\.\d+)/
62
+ if /^net-tools (\d+\.\d+)/.match?(line)
63
63
  @ifconfig_version = line.match(/^net-tools (\d+\.\d+)/)[1]
64
64
  end
65
65
  end
66
66
  @net_tools_version.stderr.each_line do |line|
67
- if line =~ /^net-tools (\d+\.\d+)/
67
+ if /^net-tools (\d+\.\d+)/.match?(line)
68
68
  @ifconfig_version = line.match(/^net-tools (\d+\.\d+)/)[1]
69
69
  end
70
70
  end
@@ -88,11 +88,11 @@ class Chef
88
88
  @int_name = line[0..9].strip
89
89
  @interfaces[@int_name] = { "hwaddr" => (line =~ /(HWaddr)/ ? ($') : "nil").strip.chomp }
90
90
  else
91
- @interfaces[@int_name]["inet_addr"] = (line =~ /inet addr:(\S+)/ ? Regexp.last_match(1) : "nil") if line =~ /inet addr:/
92
- @interfaces[@int_name]["bcast"] = (line =~ /Bcast:(\S+)/ ? Regexp.last_match(1) : "nil") if line =~ /Bcast:/
93
- @interfaces[@int_name]["mask"] = (line =~ /Mask:(\S+)/ ? Regexp.last_match(1) : "nil") if line =~ /Mask:/
94
- @interfaces[@int_name]["mtu"] = (line =~ /MTU:(\S+)/ ? Regexp.last_match(1) : "nil") if line =~ /MTU:/
95
- @interfaces[@int_name]["metric"] = (line =~ /Metric:(\S+)/ ? Regexp.last_match(1) : "nil") if line =~ /Metric:/
91
+ @interfaces[@int_name]["inet_addr"] = (line =~ /inet addr:(\S+)/ ? Regexp.last_match(1) : "nil") if /inet addr:/.match?(line)
92
+ @interfaces[@int_name]["bcast"] = (line =~ /Bcast:(\S+)/ ? Regexp.last_match(1) : "nil") if /Bcast:/.match?(line)
93
+ @interfaces[@int_name]["mask"] = (line =~ /Mask:(\S+)/ ? Regexp.last_match(1) : "nil") if /Mask:/.match?(line)
94
+ @interfaces[@int_name]["mtu"] = (line =~ /MTU:(\S+)/ ? Regexp.last_match(1) : "nil") if /MTU:/.match?(line)
95
+ @interfaces[@int_name]["metric"] = (line =~ /Metric:(\S+)/ ? Regexp.last_match(1) : "nil") if /Metric:/.match?(line)
96
96
  end
97
97
 
98
98
  next unless @interfaces.key?(new_resource.device)