class Chef::Platform
Public Class Methods
dsc_refresh_mode_disabled?(node)
click to toggle source
# File lib/chef/platform/query_helpers.rb, line 84 def dsc_refresh_mode_disabled?(node) require_relative "../util/powershell/cmdlet" cmdlet = Chef::Util::Powershell::Cmdlet.new(node, "Get-DscLocalConfigurationManager", :object) metadata = cmdlet.run!.return_value metadata["RefreshMode"] == "Disabled" end
find_platform_and_version(node)
click to toggle source
# File lib/chef/platform/provider_mapping.rb, line 29 def find_platform_and_version(node) platform = nil version = nil if node[:platform] platform = node[:platform] elsif node.attribute?("os") platform = node[:os] end raise ArgumentError, "Cannot find a platform for #{node}" unless platform if node[:platform_version] version = node[:platform_version] elsif node[:os_version] version = node[:os_version] elsif node[:os_release] version = node[:os_release] end raise ArgumentError, "Cannot find a version for #{node}" unless version [platform, version] end
supported_powershell_version?(node, version_string)
click to toggle source
# File lib/chef/platform/query_helpers.rb, line 91 def supported_powershell_version?(node, version_string) return false unless node[:languages] && node[:languages][:powershell] require "rubygems" unless defined?(Gem) Gem::Version.new(node[:languages][:powershell][:version]) >= Gem::Version.new(version_string) end
supports_dsc?(node)
click to toggle source
# File lib/chef/platform/query_helpers.rb, line 70 def supports_dsc?(node) node[:languages] && node[:languages][:powershell] && node[:languages][:powershell][:version].to_i >= 4 end
supports_dsc_invoke_resource?(node)
click to toggle source
# File lib/chef/platform/query_helpers.rb, line 75 def supports_dsc_invoke_resource?(node) supports_dsc?(node) && supported_powershell_version?(node, "5.0.10018.0") end
supports_msi?()
click to toggle source
# File lib/chef/platform/query_helpers.rb, line 49 def supports_msi? return false unless windows? require "win32/registry" unless defined?(Win32::Registry) key = "System\\CurrentControlSet\\Services\\msiserver" access = ::Win32::Registry::KEY_QUERY_VALUE begin ::Win32::Registry::HKEY_LOCAL_MACHINE.open(key, access) do |reg| true end rescue ::Win32::Registry::Error false end end
supports_powershell_execution_bypass?(node)
click to toggle source
# File lib/chef/platform/query_helpers.rb, line 65 def supports_powershell_execution_bypass?(node) node[:languages] && node[:languages][:powershell] && node[:languages][:powershell][:version].to_i >= 3 end
supports_refresh_mode_enabled?(node)
click to toggle source
# File lib/chef/platform/query_helpers.rb, line 80 def supports_refresh_mode_enabled?(node) supported_powershell_version?(node, "5.0.10586.0") end
windows?()
click to toggle source
# File lib/chef/platform/query_helpers.rb, line 23 def windows? ChefConfig.windows? end
windows_nano_server?()
click to toggle source
# File lib/chef/platform/query_helpers.rb, line 27 def windows_nano_server? return false unless windows? require "win32/registry" unless defined?(Win32::Registry) # This method may be called before ohai runs (e.g., it may be used to # determine settings in config.rb). Chef::Win32::Registry.new uses # node attributes to verify the machine architecture which aren't # accessible before ohai runs. nano = nil key = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Server\\ServerLevels" access = ::Win32::Registry::KEY_QUERY_VALUE | 0x0100 # nano is 64-bit only begin ::Win32::Registry::HKEY_LOCAL_MACHINE.open(key, access) do |reg| nano = reg["NanoServer"] end rescue ::Win32::Registry::Error # If accessing the registry key failed, then we're probably not on # nano. Fail through. end nano == 1 end