summaryrefslogtreecommitdiff
path: root/lib/chef/resource
diff options
context:
space:
mode:
authormwrock <matt@mattwrock.com>2020-09-04 18:46:27 -0700
committermwrock <matt@mattwrock.com>2020-09-08 14:46:36 -0700
commit41ae92bd5070b450e04f02ae9a1d30987d14bb93 (patch)
tree952399197c5344e29a648560fda242ef77a7dd7e /lib/chef/resource
parent313afa345a0d19019218807a16bf6fdd6447a87b (diff)
downloadchef-41ae92bd5070b450e04f02ae9a1d30987d14bb93.tar.gz
use autoloading for many required gems
Signed-off-by: mwrock <matt@mattwrock.com>
Diffstat (limited to 'lib/chef/resource')
-rw-r--r--lib/chef/resource/apt_repository.rb2
-rw-r--r--lib/chef/resource/build_essential.rb2
-rw-r--r--lib/chef/resource/chef_vault_secret.rb2
-rw-r--r--lib/chef/resource/macos_userdefaults.rb2
-rw-r--r--lib/chef/resource/openssl_ec_private_key.rb8
-rw-r--r--lib/chef/resource/openssl_rsa_private_key.rb8
-rw-r--r--lib/chef/resource/osx_profile.rb4
-rw-r--r--lib/chef/resource/plist.rb2
-rw-r--r--lib/chef/resource/windows_certificate.rb6
-rw-r--r--lib/chef/resource/windows_printer.rb8
-rw-r--r--lib/chef/resource/windows_printer_port.rb10
11 files changed, 32 insertions, 22 deletions
diff --git a/lib/chef/resource/apt_repository.rb b/lib/chef/resource/apt_repository.rb
index bc0c904745..e4569561fc 100644
--- a/lib/chef/resource/apt_repository.rb
+++ b/lib/chef/resource/apt_repository.rb
@@ -19,7 +19,7 @@
require_relative "../resource"
require_relative "../http/simple"
require "tmpdir" unless defined?(Dir.mktmpdir)
-require "addressable" unless defined?(Addressable)
+autoload :Addressable, "addressable"
class Chef
class Resource
diff --git a/lib/chef/resource/build_essential.rb b/lib/chef/resource/build_essential.rb
index ad37d3924f..17b97ebd97 100644
--- a/lib/chef/resource/build_essential.rb
+++ b/lib/chef/resource/build_essential.rb
@@ -15,7 +15,7 @@
#
require_relative "../resource"
-require "plist"
+autoload :Plist, "plist"
class Chef
class Resource
diff --git a/lib/chef/resource/chef_vault_secret.rb b/lib/chef/resource/chef_vault_secret.rb
index d8a2e89ffe..1c8fa985f9 100644
--- a/lib/chef/resource/chef_vault_secret.rb
+++ b/lib/chef/resource/chef_vault_secret.rb
@@ -16,7 +16,7 @@
#
require_relative "../resource"
-require "chef-vault"
+autoload :ChefVault, "chef-vault"
class Chef
class Resource
diff --git a/lib/chef/resource/macos_userdefaults.rb b/lib/chef/resource/macos_userdefaults.rb
index d163fd8402..ab789635e7 100644
--- a/lib/chef/resource/macos_userdefaults.rb
+++ b/lib/chef/resource/macos_userdefaults.rb
@@ -17,7 +17,7 @@
require_relative "../resource"
require_relative "../dist"
-require "plist"
+autoload :Plist, "plist"
class Chef
class Resource
diff --git a/lib/chef/resource/openssl_ec_private_key.rb b/lib/chef/resource/openssl_ec_private_key.rb
index 36ad8f43ae..26f28b1ad8 100644
--- a/lib/chef/resource/openssl_ec_private_key.rb
+++ b/lib/chef/resource/openssl_ec_private_key.rb
@@ -66,10 +66,12 @@ class Chef
description: "The desired passphrase for the key."
property :key_cipher, String,
- equal_to: OpenSSL::Cipher.ciphers,
- validation_message: "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options.",
description: "The designed cipher to use when generating your key. Run `openssl list-cipher-algorithms` to see available options.",
- default: "des3"
+ default: lazy { "des3" },
+ callbacks: {
+ "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options." =>
+ proc { |v| OpenSSL::Cipher.ciphers.include?(v) },
+ }
property :owner, [String, Integer],
description: "The owner applied to all files created by the resource."
diff --git a/lib/chef/resource/openssl_rsa_private_key.rb b/lib/chef/resource/openssl_rsa_private_key.rb
index c8129a728e..381e2af696 100644
--- a/lib/chef/resource/openssl_rsa_private_key.rb
+++ b/lib/chef/resource/openssl_rsa_private_key.rb
@@ -65,10 +65,12 @@ class Chef
description: "The desired passphrase for the key."
property :key_cipher, String,
- equal_to: OpenSSL::Cipher.ciphers,
- validation_message: "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options.",
description: "The designed cipher to use when generating your key. Run `openssl list-cipher-algorithms` to see available options.",
- default: "des3"
+ default: lazy { "des3" },
+ callbacks: {
+ "key_cipher must be a cipher known to openssl. Run `openssl list-cipher-algorithms` to see available options." =>
+ proc { |v| OpenSSL::Cipher.ciphers.include?(v) },
+ }
property :owner, [String, Integer],
description: "The owner applied to all files created by the resource."
diff --git a/lib/chef/resource/osx_profile.rb b/lib/chef/resource/osx_profile.rb
index c3ff099436..d1a2791d3c 100644
--- a/lib/chef/resource/osx_profile.rb
+++ b/lib/chef/resource/osx_profile.rb
@@ -19,8 +19,8 @@
require_relative "../resource"
require_relative "../log"
require_relative "../resource/file"
-require "uuidtools"
-require "plist"
+autoload :UUIDTools, "uuidtools"
+autoload :Plist, "plist"
class Chef
class Resource
diff --git a/lib/chef/resource/plist.rb b/lib/chef/resource/plist.rb
index 06811ea8b6..f4058520a9 100644
--- a/lib/chef/resource/plist.rb
+++ b/lib/chef/resource/plist.rb
@@ -16,7 +16,7 @@
# limitations under the License.
#
require_relative "../resource"
-require "plist"
+autoload :Plist, "plist"
class Chef
class Resource
diff --git a/lib/chef/resource/windows_certificate.rb b/lib/chef/resource/windows_certificate.rb
index ce1bcede40..215f87d9c3 100644
--- a/lib/chef/resource/windows_certificate.rb
+++ b/lib/chef/resource/windows_certificate.rb
@@ -19,8 +19,10 @@
require_relative "../util/path_helper"
require_relative "../resource"
-require "win32-certstore" if Chef::Platform.windows?
-require "openssl" unless defined?(OpenSSL)
+module Win32
+ autoload :Certstore, "win32-certstore" if Chef::Platform.windows?
+end
+autoload :OpenSSL, "openssl"
require_relative "../dist"
class Chef
diff --git a/lib/chef/resource/windows_printer.rb b/lib/chef/resource/windows_printer.rb
index 947477baeb..dea15ba112 100644
--- a/lib/chef/resource/windows_printer.rb
+++ b/lib/chef/resource/windows_printer.rb
@@ -24,7 +24,7 @@ class Chef
class WindowsPrinter < Chef::Resource
unified_mode true
- require "resolv"
+ autoload :Resolv, "resolv"
provides(:windows_printer) { true }
@@ -78,8 +78,10 @@ class Chef
property :ipv4_address, String,
description: "The IPv4 address of the printer, such as `10.4.64.23`",
- validation_message: "The ipv4_address property must be in the IPv4 format of `WWW.XXX.YYY.ZZZ`",
- regex: Resolv::IPv4::Regex
+ callbacks: {
+ "The ipv4_address property must be in the IPv4 format of `WWW.XXX.YYY.ZZZ`" =>
+ proc { |v| v.match(Resolv::IPv4::Regex) },
+ }
PRINTERS_REG_KEY = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\\'.freeze unless defined?(PRINTERS_REG_KEY)
diff --git a/lib/chef/resource/windows_printer_port.rb b/lib/chef/resource/windows_printer_port.rb
index 1b3f8753ba..2a4eaa09b3 100644
--- a/lib/chef/resource/windows_printer_port.rb
+++ b/lib/chef/resource/windows_printer_port.rb
@@ -24,7 +24,7 @@ class Chef
class WindowsPrinterPort < Chef::Resource
unified_mode true
- require "resolv"
+ autoload :Resolv, "resolv"
provides(:windows_printer_port) { true }
@@ -61,9 +61,11 @@ class Chef
property :ipv4_address, String,
name_property: true,
- regex: Resolv::IPv4::Regex,
- validation_message: "The ipv4_address property must be in the format of WWW.XXX.YYY.ZZZ!",
- description: "An optional property for the IPv4 address of the printer if it differs from the resource block's name."
+ description: "An optional property for the IPv4 address of the printer if it differs from the resource block's name.",
+ callbacks: {
+ "The ipv4_address property must be in the format of WWW.XXX.YYY.ZZZ!" =>
+ proc { |v| v.match(Resolv::IPv4::Regex) },
+ }
property :port_name, String,
description: "The port name."