summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2020-01-31 16:25:26 -0800
committerLamont Granquist <lamont@scriptkiddie.org>2020-02-03 15:34:05 -0800
commit46461876fa2da0118b5c14b6da65019191d5fd04 (patch)
treec446d8fc406d98bcb2ec1ebbfb1a7d8fdbf6ae9b
parent4747ddaed6f0b02416a0e2fb2da42d1509d13568 (diff)
downloadchef-46461876fa2da0118b5c14b6da65019191d5fd04.tar.gz
fixing APIs
these were broken in chef-sugar Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
-rw-r--r--chef-utils/README.md17
-rw-r--r--chef-utils/lib/chef-utils/dsl/virtualization.rb18
-rw-r--r--chef-utils/spec/unit/dsl/virtualization_spec.rb20
3 files changed, 37 insertions, 18 deletions
diff --git a/chef-utils/README.md b/chef-utils/README.md
index 55912a6755..ae4dd14e51 100644
--- a/chef-utils/README.md
+++ b/chef-utils/README.md
@@ -135,14 +135,15 @@ Architecture Helpers allow you to determine the processor architecture of your n
### Virtualization Helpers
-* `kvm?` - if the node is a kvm guest
-* `lxc?` - if the node is an lxc guest
-* `parallels?`- if the node is a parallels guest
-* `vbox?` - if the node is a virtualbox guest
-* `vmware?` - if the node is a vmware guest
-* `openvz?` - if the node is an openvz guest
-* `virtual?` - if any of the above are true (guest of any detected virtualization system)
-* `physical?` - strictly the logical opposite of `virtual?`
+* `kvm?` - if the node is a kvm (guest or host)
+* `lxc?` - if the node is an lxc (guest or host)
+* `parallels?`- if the node is a parallels (guest or host)
+* `vbox?` - if the node is a virtualbox (guest or host)
+* `vmware?` - if the node is a vmware (guest or host)
+* `openvz?` - if the node is an openvz (guest or host)
+* `guest?` - if the node is detected as any kind of guest
+* `virtual_host?` - if the node is detected as being any kind of virtual host
+* `physical?` - strictly the logical opposite of `guest?`
* `vagrant?` - attempts to identify the node as a vagrant guest (this check may be error prone)
### Train Helpers
diff --git a/chef-utils/lib/chef-utils/dsl/virtualization.rb b/chef-utils/lib/chef-utils/dsl/virtualization.rb
index eb324bd946..e958c5f4ce 100644
--- a/chef-utils/lib/chef-utils/dsl/virtualization.rb
+++ b/chef-utils/lib/chef-utils/dsl/virtualization.rb
@@ -94,11 +94,23 @@ module ChefUtils
#
# @return [Boolean]
#
- def virtual?(node = __getnode)
- openvz?(node) || vmware?(node) || virtualbox?(node) || parallels?(node) || lxc?(node) || kvm?(node)
+ def guest?(node = __getnode)
+ node.dig("virtualization", "role") == "guest"
end
- # Determine if the current node is NOT running under any virutalization environment
+ alias_method :virtual?, :guest?
+
+ # Determine if the current node is running under any virutalization environment
+ #
+ # @param [Chef::Node] node
+ #
+ # @return [Boolean]
+ #
+ def virtual_host?(node = __getnode)
+ node.dig("virtualization", "role") == "host"
+ end
+
+ # Determine if the current node is NOT running under any virutalization environment (virtual hosts or just plain on metal)
#
# @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 52b3eb65d1..437e1a0732 100644
--- a/chef-utils/spec/unit/dsl/virtualization_spec.rb
+++ b/chef-utils/spec/unit/dsl/virtualization_spec.rb
@@ -45,24 +45,30 @@ RSpec.describe ChefUtils::DSL::Virtualization do
end
context "on kvm" do
- virtualization_reports_true_for(:virtual?, :kvm?, node: { "virtualization" => { "system" => "kvm" } })
+ virtualization_reports_true_for(:guest?, :virtual?, :kvm?, node: { "virtualization" => { "system" => "kvm", "role" => "guest" } })
+ virtualization_reports_true_for(:virtual_host?, :physical?, :kvm?, node: { "virtualization" => { "system" => "kvm", "role" => "host" } })
end
context "on lxc" do
- virtualization_reports_true_for(:virtual?, :lxc?, node: { "virtualization" => { "system" => "lxc" } })
+ virtualization_reports_true_for(:guest?, :virtual?, :lxc?, node: { "virtualization" => { "system" => "lxc", "role" => "guest" } })
+ virtualization_reports_true_for(:virtual_host?, :physical?, :lxc?, node: { "virtualization" => { "system" => "lxc", "role" => "host" } })
end
context "on parallels" do
- virtualization_reports_true_for(:virtual?, :parallels?, node: { "virtualization" => { "system" => "parallels" } })
+ virtualization_reports_true_for(:guest?, :virtual?, :parallels?, node: { "virtualization" => { "system" => "parallels", "role" => "guest" } })
+ virtualization_reports_true_for(:virtual_host?, :physical?, :parallels?, node: { "virtualization" => { "system" => "parallels", "role" => "host" } })
end
context "on virtualbox" do
- virtualization_reports_true_for(:virtual?, :virtualbox?, :vbox?, node: { "virtualization" => { "system" => "vbox" } })
+ virtualization_reports_true_for(:guest?, :virtual?, :virtualbox?, :vbox?, node: { "virtualization" => { "system" => "vbox", "role" => "guest" } })
+ virtualization_reports_true_for(:virtual_host?, :physical?, :virtualbox?, :vbox?, node: { "virtualization" => { "system" => "vbox", "role" => "host" } })
end
context "on vmware" do
- virtualization_reports_true_for(:virtual?, :vmware?, node: { "virtualization" => { "system" => "vmware" } })
+ virtualization_reports_true_for(:guest?, :virtual?, :vmware?, node: { "virtualization" => { "system" => "vmware", "role" => "guest" } })
+ virtualization_reports_true_for(:virtual_host?, :physical?, :vmware?, node: { "virtualization" => { "system" => "vmware", "role" => "host" } })
end
context "on openvz" do
- virtualization_reports_true_for(:virtual?, :openvz?, node: { "virtualization" => { "system" => "openvz" } })
+ virtualization_reports_true_for(:guest?, :virtual?, :openvz?, node: { "virtualization" => { "system" => "openvz", "role" => "guest" } })
+ virtualization_reports_true_for(:virtual_host?, :physical?, :openvz?, node: { "virtualization" => { "system" => "openvz", "role" => "host" } })
end
- context "on anything else" do
+ context "on metal which is not a virt host" do
virtualization_reports_true_for(:physical?, node: {} )
end
end