summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2020-01-31 16:25:26 -0800
committerLamont Granquist <lamont@scriptkiddie.org>2020-01-31 16:25:26 -0800
commit569b7910b4ddf37063dd88483500cebbfcd4c18d (patch)
tree328bab1218436b39018d63f58bbec10df2eaa770
parent9ce4eb455526074cc88f398a8397e5d2a62443fa (diff)
downloadchef-569b7910b4ddf37063dd88483500cebbfcd4c18d.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 ce62afa64a..44f5dd114f 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