diff options
author | Tim Smith <tsmith@chef.io> | 2016-11-30 10:04:53 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-30 10:04:53 -0800 |
commit | 5ac9bdca75da6c657547fdb2a640619c21763528 (patch) | |
tree | 634ff2fd37dc360fee8534753fc94a91b2d19254 | |
parent | 51ac6d9ddfe65bf8401ce999cdb3ff48efed22c3 (diff) | |
parent | 98c0689e8f6123d7a390d5ca2a93ef813a4a3b00 (diff) | |
download | ohai-5ac9bdca75da6c657547fdb2a640619c21763528.tar.gz |
Merge pull request #909 from chef/bahamas10-dave-1426559693
Rework / fix logic in the joyent plugin and improve specs
-rw-r--r-- | lib/ohai/plugins/joyent.rb | 23 | ||||
-rw-r--r-- | spec/unit/plugins/joyent_spec.rb | 78 |
2 files changed, 54 insertions, 47 deletions
diff --git a/lib/ohai/plugins/joyent.rb b/lib/ohai/plugins/joyent.rb index c921d65d..118ea907 100644 --- a/lib/ohai/plugins/joyent.rb +++ b/lib/ohai/plugins/joyent.rb @@ -25,23 +25,18 @@ Ohai.plugin(:Joyent) do depends "os", "platform", "virtualization" def collect_product_file - lines = [] - if ::File.exists?("/etc/product") - ::File.open("/etc/product") do |file| - while line = file.gets - lines << line - end - end + data = ::File.read("/etc/product") rescue nil + if data + data.strip.split("\n") + else + [] end - lines end def collect_pkgsrc - if File.exist?("/opt/local/etc/pkg_install.conf") - sm_pkgsrc = ::File.read("/opt/local/etc/pkg_install.conf").split("=") - sm_pkgsrc[1].chomp - else - nil + data = ::File.read("/opt/local/etc/pkg_install.conf") rescue nil + if data + /PKG_PATH=(.*)/.match(data)[1] rescue nil end end @@ -76,7 +71,7 @@ Ohai.plugin(:Joyent) do end ## retrieve pkgsrc - joyent[:sm_pkgsrc] = collect_pkgsrc if collect_pkgsrc + joyent[:sm_pkgsrc] = collect_pkgsrc end end end diff --git a/spec/unit/plugins/joyent_spec.rb b/spec/unit/plugins/joyent_spec.rb index a6670126..851826fc 100644 --- a/spec/unit/plugins/joyent_spec.rb +++ b/spec/unit/plugins/joyent_spec.rb @@ -1,71 +1,83 @@ -require "spec_helper" +require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "/spec_helper.rb")) describe Ohai::System, "plugin joyent" do - before(:each) do - @plugin = get_plugin("joyent") - end + let(:plugin) { get_plugin("joyent") } describe "without joyent" do before(:each) do - allow(@plugin).to receive(:is_smartos?).and_return(false) + allow(plugin).to receive(:is_smartos?).and_return(false) end - it "should NOT create joyent" do - @plugin.run - expect(@plugin[:joyent]).to be_nil + it "DOES NOT create joyent mash" do + plugin.run + expect(plugin[:joyent]).to be_nil end end describe "with joyent" do before(:each) do - allow(@plugin).to receive(:is_smartos?).and_return(true) - @plugin[:virtualization] = Mash.new - @plugin[:virtualization][:guest_uuid] = "global" + allow(plugin).to receive(:is_smartos?).and_return(true) + plugin[:virtualization] = Mash.new + plugin[:virtualization][:guest_uuid] = "global" end - it "should create joyent" do - @plugin.run - expect(@plugin[:joyent]).not_to be_nil + it "creates joyent mash" do + plugin.run + expect(plugin[:joyent]).not_to be_nil end describe "under global zone" do before(:each) do - @plugin.run + plugin.run end - it "should ditect global zone" do - expect(@plugin[:joyent][:sm_uuid]).to eql "global" + it "detects global zone" do + expect(plugin[:joyent][:sm_uuid]).to eql "global" end - it "should NOT create sm_id" do - expect(@plugin[:joyent][:sm_id]).to be_nil + it "DOES NOT create sm_id" do + expect(plugin[:joyent][:sm_id]).to be_nil end end describe "under smartmachine" do before(:each) do - @plugin[:virtualization][:guest_uuid] = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" - @plugin[:virtualization][:guest_id] = "30" - allow(@plugin).to receive(:collect_product_file).and_return(["Name: Joyent Instance", "Image: base64 13.4.2", "Documentation: http://wiki.joyent.com/jpc2/SmartMachine+Base"]) - allow(@plugin).to receive(:collect_pkgsrc).and_return("http://pkgsrc.joyent.com/packages/SmartOS/2013Q4/x86_64/All") - @plugin.run + plugin[:virtualization][:guest_uuid] = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" + plugin[:virtualization][:guest_id] = "30" + + etc_product = <<-EOS +Name: Joyent Instance +Image: pkgbuild 16.3.1 +Documentation: https://docs.joyent.com/images/smartos/pkgbuild + EOS + + pkg_install_conf = <<-EOS +GPG_KEYRING_VERIFY=/opt/local/etc/gnupg/pkgsrc.gpg +GPG_KEYRING_PKGVULN=/opt/local/share/gnupg/pkgsrc-security.gpg +PKG_PATH=https://pkgsrc.joyent.com/packages/SmartOS/2016Q3/x86_64/All +VERIFIED_INSTALLATION=trusted + EOS + + allow(::File).to receive(:read).with("/etc/product").and_return(etc_product) + allow(::File).to receive(:read).with("/opt/local/etc/pkg_install.conf").and_return(pkg_install_conf) + plugin.run end - it "should retrive zone uuid" do - expect(@plugin[:joyent][:sm_uuid]).to eql "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" + it "retrieves zone uuid" do + expect(plugin[:joyent][:sm_uuid]).to eql "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx" end - it "should collect sm_id" do - expect(@plugin[:joyent][:sm_id]).to eql "30" + it "collects sm_id" do + expect(plugin[:joyent][:sm_id]).to eql "30" end - it "should collect images" do - expect(@plugin[:joyent][:sm_image_id]).not_to be_nil - expect(@plugin[:joyent][:sm_image_ver]).not_to be_nil + it "collects images" do + expect(plugin[:joyent][:sm_image_id]).to eql "pkgbuild" + expect(plugin[:joyent][:sm_image_ver]).to eql "16.3.1" end - it "should collect pkgsrc" do - expect(@plugin[:joyent][:sm_pkgsrc]).to eql "http://pkgsrc.joyent.com/packages/SmartOS/2013Q4/x86_64/All" + it "collects pkgsrc" do + expect(plugin[:joyent][:sm_pkgsrc]).to eql "https://pkgsrc.joyent.com/packages/SmartOS/2016Q3/x86_64/All" end end end |