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
84
85
86
87
88
89
|
# File 'lib/chef/platform/query_helpers.rb', line 84
def dsc_refresh_mode_disabled?(node)
require "chef/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
91
92
93
94
95
96
|
# 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"
Gem::Version.new(node[:languages][:powershell][:version]) >=
Gem::Version.new(version_string)
end
|
.supports_dsc?(node) ⇒ Boolean
70
71
72
73
|
# 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) ⇒ Boolean
75
76
77
78
|
# 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? ⇒ Boolean
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/chef/platform/query_helpers.rb', line 49
def supports_msi?
return false unless windows?
require "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
65
66
67
68
|
# 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) ⇒ Boolean
80
81
82
|
# 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? ⇒ Boolean
23
24
25
|
# File 'lib/chef/platform/query_helpers.rb', line 23
def windows?
ChefConfig.windows?
end
|
.windows_nano_server? ⇒ Boolean
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/chef/platform/query_helpers.rb', line 27
def windows_nano_server?
return false unless windows?
require "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
|