Class: Chef::Platform
- Inherits:
-
Object
show all
- Defined in:
- lib/chef/platform.rb,
lib/chef/platform/rebooter.rb,
lib/chef/platform/priority_map.rb,
lib/chef/platform/query_helpers.rb,
lib/chef/platform/service_helpers.rb,
lib/chef/platform/provider_mapping.rb,
lib/chef/platform/provider_handler_map.rb,
lib/chef/platform/resource_handler_map.rb,
lib/chef/platform/provider_priority_map.rb,
lib/chef/platform/resource_priority_map.rb
Defined Under Namespace
Modules: Rebooter
Classes: PriorityMap, ProviderHandlerMap, ProviderPriorityMap, ResourceHandlerMap, ResourcePriorityMap, ServiceHelpers
Class Method Summary
collapse
Class Method Details
.dsc_refresh_mode_disabled?(node) ⇒ Boolean
88
89
90
91
92
93
|
# File 'lib/chef/platform/query_helpers.rb', line 88
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
|
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# 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) ⇒ Boolean
95
96
97
98
99
100
101
|
# File 'lib/chef/platform/query_helpers.rb', line 95
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) ⇒ Boolean
74
75
76
77
|
# File 'lib/chef/platform/query_helpers.rb', line 74
def supports_dsc?(node)
node[:languages] && node[:languages][:powershell] &&
node[:languages][:powershell][:version].to_i >= 4
end
|
.supports_dsc_invoke_resource?(node) ⇒ Boolean
79
80
81
82
|
# File 'lib/chef/platform/query_helpers.rb', line 79
def supports_dsc_invoke_resource?(node)
supports_dsc?(node) &&
supported_powershell_version?(node, "5.0.10018.0")
end
|
.supports_msi? ⇒ Boolean
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/chef/platform/query_helpers.rb', line 52
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) ⇒ Boolean
69
70
71
72
|
# File 'lib/chef/platform/query_helpers.rb', line 69
def supports_powershell_execution_bypass?(node)
node[:languages] && node[:languages][:powershell] &&
node[:languages][:powershell][:version].to_i >= 3
end
|
.supports_refresh_mode_enabled?(node) ⇒ Boolean
84
85
86
|
# File 'lib/chef/platform/query_helpers.rb', line 84
def supports_refresh_mode_enabled?(node)
supported_powershell_version?(node, "5.0.10586.0")
end
|
.windows? ⇒ Boolean
25
26
27
|
# File 'lib/chef/platform/query_helpers.rb', line 25
def windows?
ChefUtils.windows?
end
|
.windows_nano_server? ⇒ Boolean
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/chef/platform/query_helpers.rb', line 29
def windows_nano_server?
return false unless windows?
require "win32/registry" unless defined?(Win32::Registry)
nano = nil
key = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Server\\ServerLevels"
access = ::Win32::Registry::KEY_QUERY_VALUE | 0x0100 begin
::Win32::Registry::HKEY_LOCAL_MACHINE.open(key, access) do |reg|
nano = reg["NanoServer"]
end
rescue ::Win32::Registry::Error
end
nano == 1
end
|