From 38ce621e1fc4132d5d365dc6a43fc3e6f5688406 Mon Sep 17 00:00:00 2001 From: Mike Butler <24615387+snohio@users.noreply.github.com> Date: Tue, 7 May 2024 15:53:21 -0400 Subject: [PATCH] hyperv added to virtualization helper (#14359) Signed-off-by: Mike Butler --- chef-utils/lib/chef-utils/dsl/virtualization.rb | 11 +++++++++++ chef-utils/spec/unit/dsl/virtualization_spec.rb | 3 +++ 2 files changed, 14 insertions(+) diff --git a/chef-utils/lib/chef-utils/dsl/virtualization.rb b/chef-utils/lib/chef-utils/dsl/virtualization.rb index 599651c6123..4d5c43fb137 100644 --- a/chef-utils/lib/chef-utils/dsl/virtualization.rb +++ b/chef-utils/lib/chef-utils/dsl/virtualization.rb @@ -184,6 +184,17 @@ def openvz_host?(node = __getnode) node.dig("virtualization", "system") == "openvz" && node.dig("virtualization", "role") == "host" end + # Determine if the current node is running under Microsoft Hyper-v. + # + # @param [Chef::Node] node + # @since 18.5 + # + # @return [Boolean] + # + def hyperv?(node = __getnode) + node.dig("virtualization", "system") == "hyperv" && node.dig("virtualization", "role") == "guest" + end + # Determine if the current node is running under any virtualization environment # # @param [Chef::Node] node diff --git a/chef-utils/spec/unit/dsl/virtualization_spec.rb b/chef-utils/spec/unit/dsl/virtualization_spec.rb index 6ee7eb3d3b4..d737c532c23 100644 --- a/chef-utils/spec/unit/dsl/virtualization_spec.rb +++ b/chef-utils/spec/unit/dsl/virtualization_spec.rb @@ -45,6 +45,9 @@ def virtualization_reports_true_for(*args, node:) end end + context "on hyperv" do + virtualization_reports_true_for(:guest?, :virtual?, :hyperv?, node: { "virtualization" => { "system" => "hyperv", "role" => "guest" } }) + end context "on kvm" do virtualization_reports_true_for(:guest?, :virtual?, :kvm?, node: { "virtualization" => { "system" => "kvm", "role" => "guest" } }) virtualization_reports_true_for(:hypervisor?, :physical?, :kvm_host?, node: { "virtualization" => { "system" => "kvm", "role" => "host" } })