diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2020-01-31 16:25:26 -0800 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2020-02-03 15:34:05 -0800 |
commit | 46461876fa2da0118b5c14b6da65019191d5fd04 (patch) | |
tree | c446d8fc406d98bcb2ec1ebbfb1a7d8fdbf6ae9b | |
parent | 4747ddaed6f0b02416a0e2fb2da42d1509d13568 (diff) | |
download | chef-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.md | 17 | ||||
-rw-r--r-- | chef-utils/lib/chef-utils/dsl/virtualization.rb | 18 | ||||
-rw-r--r-- | chef-utils/spec/unit/dsl/virtualization_spec.rb | 20 |
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 |