diff options
author | Tim Smith <tsmith@chef.io> | 2018-07-09 21:12:52 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-09 21:12:52 -0700 |
commit | aa6bbce652fbdfa82c8092a9edddbfbbe9ba1d45 (patch) | |
tree | af65e34b1832b1c08a74e57214cc886cb976e142 | |
parent | d1d65922849d12a0fea804e10078c81f82ad5cc1 (diff) | |
parent | 694967eba336b69e7134fc2b15310114f79e69b2 (diff) | |
download | ohai-aa6bbce652fbdfa82c8092a9edddbfbbe9ba1d45.tar.gz |
Merge pull request #1210 from chef/sp/1209
Add system_enclosure plugin for Windows
-rw-r--r-- | lib/ohai/plugins/windows/system_enclosure.rb | 30 | ||||
-rw-r--r-- | spec/unit/plugins/windows/system_enclosure_spec.rb | 45 |
2 files changed, 75 insertions, 0 deletions
diff --git a/lib/ohai/plugins/windows/system_enclosure.rb b/lib/ohai/plugins/windows/system_enclosure.rb new file mode 100644 index 00000000..d6ebaf26 --- /dev/null +++ b/lib/ohai/plugins/windows/system_enclosure.rb @@ -0,0 +1,30 @@ +# +# Author:: Stuart Preston (<stuart@chef.io>) +# Copyright:: Copyright (c) 2018, Chef Software Inc. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +Ohai.plugin :SystemEnclosure do + provides "system_enclosure" + + collect_data(:windows) do + require "wmi-lite/wmi" + system_enclosure Mash.new + wmi = WmiLite::Wmi.new + wmi_object = wmi.first_of("Win32_SystemEnclosure").wmi_ole_object + system_enclosure[:manufacturer] = wmi_object.invoke("manufacturer") + system_enclosure[:serialnumber] = wmi_object.invoke("serialnumber") + end +end diff --git a/spec/unit/plugins/windows/system_enclosure_spec.rb b/spec/unit/plugins/windows/system_enclosure_spec.rb new file mode 100644 index 00000000..e888538b --- /dev/null +++ b/spec/unit/plugins/windows/system_enclosure_spec.rb @@ -0,0 +1,45 @@ +# +# Author:: Stuart Preston (<stuart@chef.io>) +# Copyright:: Copyright (c) 2018, Chef Software Inc. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require_relative "../../../spec_helper.rb" + +describe Ohai::System, "System Enclosure", :windows_only do + before do + require "wmi-lite/wmi" + @plugin = get_plugin("windows/system_enclosure") + manufacturer = double("WIN32OLE", name: "manufacturer", value: "My Fake Manufacturer") + serialnumber = double("WIN32OLE", name: "serialnumber", value: "1234123412341234") + property_map = [ manufacturer, serialnumber ] + + wmi_ole_object = double( "WIN32OLE", properties_: property_map) + allow(wmi_ole_object).to receive(:invoke).with(manufacturer.name).and_return(manufacturer.value) + allow(wmi_ole_object).to receive(:invoke).with(serialnumber.name).and_return(serialnumber.value) + wmi_object = WmiLite::Wmi::Instance.new(wmi_ole_object) + expect_any_instance_of(WmiLite::Wmi).to receive(:first_of).with(("Win32_SystemEnclosure")).and_return(wmi_object) + end + + it "should return the manufacturer" do + @plugin.run + expect(@plugin["system_enclosure"]["manufacturer"]).to eql("My Fake Manufacturer") + end + + it "should return a serial number" do + @plugin.run + expect(@plugin["system_enclosure"]["serialnumber"]).to eql("1234123412341234") + end +end |