Class: Chef::Platform

Inherits:
Object
  • Object
show all
Extended by:
Mixin::PowershellExec
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, ServiceHelpers Classes: PriorityMap, ProviderHandlerMap, ProviderPriorityMap, ResourceHandlerMap, ResourcePriorityMap

Class Method Summary collapse

Class Method Details

.dsc_refresh_mode_disabled?(node) ⇒ Boolean

Returns:

  • (Boolean)


63
64
65
66
67
# File 'lib/chef/platform/query_helpers.rb', line 63

def dsc_refresh_mode_disabled?(node)
  exec = powershell_exec!("Get-DscLocalConfigurationManager")
  exec.error!
  exec.result["RefreshMode"] == "Disabled"
end

.find_platform_and_version(node) ⇒ Object

Raises:

  • (ArgumentError)


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

Returns:

  • (Boolean)


69
70
71
72
73
74
75
# File 'lib/chef/platform/query_helpers.rb', line 69

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

Returns:

  • (Boolean)


49
50
51
52
# File 'lib/chef/platform/query_helpers.rb', line 49

def supports_dsc?(node)
  node[:languages] && node[:languages][:powershell] &&
    node[:languages][:powershell][:version].to_i >= 4
end

.supports_dsc_invoke_resource?(node) ⇒ Boolean

Returns:

  • (Boolean)


54
55
56
57
# File 'lib/chef/platform/query_helpers.rb', line 54

def supports_dsc_invoke_resource?(node)
  supports_dsc?(node) &&
    supported_powershell_version?(node, "5.0.10018.0")
end

.supports_msi?Boolean

Deprecated.

we added this method due to Windows Server Nano, which is no longer a platform

Returns:

  • (Boolean)


38
39
40
41
42
# File 'lib/chef/platform/query_helpers.rb', line 38

def supports_msi?
  return false unless windows?

  true
end

.supports_powershell_execution_bypass?(node) ⇒ Boolean

Deprecated.

we don't support any release of Windows that isn't PS 3+

Returns:

  • (Boolean)


45
46
47
# File 'lib/chef/platform/query_helpers.rb', line 45

def supports_powershell_execution_bypass?(node)
  true
end

.supports_refresh_mode_enabled?(node) ⇒ Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/chef/platform/query_helpers.rb', line 59

def supports_refresh_mode_enabled?(node)
  supported_powershell_version?(node, "5.0.10586.0")
end

.windows?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/chef/platform/query_helpers.rb', line 28

def windows?
  ChefUtils.windows?
end

.windows_nano_server?Boolean

Deprecated.

Windows Nano is not a thing anymore so this check shouldn't be used

Returns:

  • (Boolean)


33
34
35
# File 'lib/chef/platform/query_helpers.rb', line 33

def windows_nano_server?
  false
end