ohai 6.18.0 → 6.20.0.rc.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ohai/mixin/command.rb +4 -3
- data/lib/ohai/mixin/gce_metadata.rb +1 -1
- data/lib/ohai/plugins/aix/cpu.rb +33 -3
- data/lib/ohai/plugins/aix/filesystem.rb +57 -3
- data/lib/ohai/plugins/aix/hostname.rb +3 -1
- data/lib/ohai/plugins/aix/kernel.rb +27 -0
- data/lib/ohai/plugins/aix/memory.rb +8 -3
- data/lib/ohai/plugins/aix/network.rb +139 -3
- data/lib/ohai/plugins/aix/platform.rb +9 -3
- data/lib/ohai/plugins/aix/uptime.rb +18 -3
- data/lib/ohai/plugins/cloud.rb +13 -6
- data/lib/ohai/plugins/gce.rb +22 -4
- data/lib/ohai/plugins/linux/platform.rb +3 -6
- data/lib/ohai/version.rb +1 -1
- data/spec/unit/mixin/command_spec.rb +22 -2
- data/spec/unit/plugins/aix/cpu_spec.rb +81 -0
- data/spec/unit/plugins/aix/filesystem_spec.rb +111 -0
- data/spec/unit/plugins/aix/hostname_spec.rb +28 -0
- data/spec/unit/plugins/aix/kernel_spec.rb +51 -0
- data/spec/unit/plugins/aix/network_spec.rb +258 -0
- data/spec/unit/plugins/aix/platform_spec.rb +42 -0
- data/spec/unit/plugins/aix/uptime_spec.rb +40 -0
- data/spec/unit/plugins/gce_spec.rb +28 -68
- data/spec/unit/plugins/linux/platform_spec.rb +0 -6
- metadata +45 -11
- checksums.yaml +0 -15
data/lib/ohai/plugins/gce.rb
CHANGED
@@ -18,18 +18,36 @@ provides "gce"
|
|
18
18
|
|
19
19
|
require 'ohai/mixin/gce_metadata'
|
20
20
|
|
21
|
-
|
21
|
+
# Checks for matching gce dmi
|
22
|
+
# https://developers.google.com/compute/docs/instances#dmi
|
23
|
+
#
|
24
|
+
# === Return
|
25
|
+
# true:: If gce dmi matches
|
26
|
+
# false:: Otherwise
|
22
27
|
GOOGLE_SYSFS_DMI = '/sys/firmware/dmi/entries/1-0/raw'
|
23
|
-
|
24
|
-
#https://developers.google.com/compute/docs/instances#dmi
|
25
28
|
def has_google_dmi?
|
26
29
|
::File.read(GOOGLE_SYSFS_DMI).include?('Google')
|
27
30
|
end
|
28
31
|
|
32
|
+
# Checks for gce metadata server
|
33
|
+
#
|
34
|
+
# === Return
|
35
|
+
# true:: If gce metadata server found
|
36
|
+
# false:: Otherwise
|
37
|
+
def has_gce_metadata?
|
38
|
+
Ohai::Mixin::GCEMetadata.can_metadata_connect?(Ohai::Mixin::GCEMetadata::GCE_METADATA_ADDR,80)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Identifies gce
|
42
|
+
#
|
43
|
+
# === Return
|
44
|
+
# true:: If gce can be identified
|
45
|
+
# false:: Otherwise
|
29
46
|
def looks_like_gce?
|
30
|
-
hint?('gce') ||
|
47
|
+
hint?('gce') || has_google_dmi? || has_gce_metadata?
|
31
48
|
end
|
32
49
|
|
50
|
+
# Adds the gce Mash
|
33
51
|
if looks_like_gce?
|
34
52
|
Ohai::Log.debug("looks_like_gce? == true")
|
35
53
|
gce Mash.new
|
@@ -38,14 +38,11 @@ elsif File.exists?("/etc/enterprise-release")
|
|
38
38
|
platform "oracle"
|
39
39
|
platform_version get_redhatish_version(contents)
|
40
40
|
elsif File.exists?("/etc/debian_version")
|
41
|
-
# Ubuntu
|
42
|
-
# Ubuntu
|
41
|
+
# Ubuntu and Debian both have /etc/debian_version
|
42
|
+
# Ubuntu should always have a working lsb, debian does not by default
|
43
43
|
if lsb[:id] =~ /Ubuntu/i
|
44
44
|
platform "ubuntu"
|
45
45
|
platform_version lsb[:release]
|
46
|
-
elsif lsb[:id] =~ /gcel/i
|
47
|
-
platform "gcel"
|
48
|
-
platform_version lsb[:release]
|
49
46
|
elsif lsb[:id] =~ /LinuxMint/i
|
50
47
|
platform "linuxmint"
|
51
48
|
platform_version lsb[:release]
|
@@ -99,7 +96,7 @@ end
|
|
99
96
|
|
100
97
|
|
101
98
|
case platform
|
102
|
-
when /debian/, /ubuntu/, /linuxmint/, /raspbian
|
99
|
+
when /debian/, /ubuntu/, /linuxmint/, /raspbian/
|
103
100
|
platform_family "debian"
|
104
101
|
when /fedora/
|
105
102
|
platform_family "fedora"
|
data/lib/ohai/version.rb
CHANGED
@@ -37,10 +37,30 @@ describe Ohai::Mixin::Command, "popen4" do
|
|
37
37
|
end
|
38
38
|
|
39
39
|
if defined?(::Encoding) && "".respond_to?(:force_encoding) #i.e., ruby 1.9
|
40
|
-
|
40
|
+
context "when external commands return UTF-8 strings and we are running under LANG=C encoding" do
|
41
|
+
before do
|
42
|
+
@saved_default_external = Encoding.default_external
|
43
|
+
@saved_default_internal = Encoding.default_internal
|
44
|
+
Encoding.default_external = Encoding::US_ASCII
|
45
|
+
Encoding.default_internal = Encoding::US_ASCII
|
46
|
+
end
|
47
|
+
|
48
|
+
after do
|
49
|
+
Encoding.default_external = @saved_default_external
|
50
|
+
Encoding.default_internal = @saved_default_internal
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should force encode the string to UTF-8" do
|
54
|
+
extend Ohai::Mixin::Command
|
55
|
+
snowy = run_command(:command => ("echo '" + ('☃' * 8096) + "'"))[1]
|
56
|
+
snowy.encoding.should == Encoding::UTF_8
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should force encode the string to UTF-8" do
|
41
61
|
extend Ohai::Mixin::Command
|
42
62
|
snowy = run_command(:command => ("echo '" + ('☃' * 8096) + "'"))[1]
|
43
|
-
snowy.encoding.should == Encoding
|
63
|
+
snowy.encoding.should == Encoding::UTF_8
|
44
64
|
end
|
45
65
|
end
|
46
66
|
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Prabhu Das (<prabhu.das@clogeny.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
|
19
|
+
|
20
|
+
describe Ohai::System, "AIX cpu plugin" do
|
21
|
+
before(:each) do
|
22
|
+
@lsdev_Cc_processor = <<-LSDEV_CC_PROCESSOR
|
23
|
+
proc0 Available 00-00 Processor
|
24
|
+
proc4 Defined 00-04 Processor
|
25
|
+
LSDEV_CC_PROCESSOR
|
26
|
+
|
27
|
+
@lsattr_El_proc0 = <<-LSATTR_EL
|
28
|
+
frequency 1654344000 Processor Speed False
|
29
|
+
smt_enabled true Processor SMT enabled False
|
30
|
+
smt_threads 2 Processor SMT threads False
|
31
|
+
state enable Processor state False
|
32
|
+
type PowerPC_POWER5 Processor type False
|
33
|
+
LSATTR_EL
|
34
|
+
@ohai = Ohai::System.new
|
35
|
+
@ohai.stub!(:require_plugin).and_return(true)
|
36
|
+
@ohai[:os] = "aix"
|
37
|
+
|
38
|
+
@ohai.stub(:from).with("lsdev -Cc processor").and_return(@lsdev_Cc_processor)
|
39
|
+
@ohai.stub(:from).with("lsattr -El proc0").and_return(@lsattr_El_proc0)
|
40
|
+
@ohai._require_plugin("aix::cpu")
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
it "sets the vendor id to IBM" do
|
45
|
+
@ohai[:cpu][:vendor_id].should == "IBM"
|
46
|
+
end
|
47
|
+
|
48
|
+
it "sets the available attribute" do
|
49
|
+
@ohai[:cpu][:available].should == 1
|
50
|
+
end
|
51
|
+
|
52
|
+
it "sets the total number of devices" do
|
53
|
+
@ohai[:cpu][:total].should == 2
|
54
|
+
end
|
55
|
+
|
56
|
+
it "detects the model" do
|
57
|
+
@ohai[:cpu][:model].should == "PowerPC_POWER5"
|
58
|
+
end
|
59
|
+
|
60
|
+
it "detects the mhz" do
|
61
|
+
@ohai[:cpu][:mhz].should == 1615570
|
62
|
+
end
|
63
|
+
|
64
|
+
it "detects the status of the device" do
|
65
|
+
@ohai[:cpu][:proc0][:status].should == "Available"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "detects the location of the device" do
|
69
|
+
@ohai[:cpu][:proc0][:location].should == "00-00"
|
70
|
+
end
|
71
|
+
|
72
|
+
context "lsattr -El device_name" do
|
73
|
+
it "detects all the attributes of the device" do
|
74
|
+
@ohai[:cpu][:proc0][:frequency].should == "1654344000"
|
75
|
+
@ohai[:cpu][:proc0][:smt_enabled].should == "true"
|
76
|
+
@ohai[:cpu][:proc0][:smt_threads].should == "2"
|
77
|
+
@ohai[:cpu][:proc0][:state].should == "enable"
|
78
|
+
@ohai[:cpu][:proc0][:type].should == "PowerPC_POWER5"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Prabhu Das (<prabhu.das@clogeny.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
|
18
|
+
|
19
|
+
describe Ohai::System, "AIX filesystem plugin" do
|
20
|
+
before(:each) do
|
21
|
+
@df_P = <<-DF_P
|
22
|
+
Filesystem 512-blocks Used Available Capacity Mounted on
|
23
|
+
/dev/hd4 786432 495632 290800 64% /
|
24
|
+
/dev/hd2 10485760 8743200 1742560 84% /usr
|
25
|
+
/dev/hd9var 2621440 1152952 1468488 44% /var
|
26
|
+
/dev/hd3 2621440 541928 2079512 21% /tmp
|
27
|
+
/dev/hd1 8650752 6098080 2552672 71% /home
|
28
|
+
/dev/hd11admin 262144 760 261384 1% /admin
|
29
|
+
/proc - - - - /proc
|
30
|
+
/dev/hd10opt 3407872 1744384 1663488 52% /opt
|
31
|
+
192.168.1.11:/stage/middleware 314572800 177025952 137546848 57% /stage/middleware
|
32
|
+
DF_P
|
33
|
+
|
34
|
+
@mount = <<-MOUNT
|
35
|
+
node mounted mounted over vfs date options
|
36
|
+
-------- --------------- --------------- ------ ------------ ---------------
|
37
|
+
/dev/hd4 / jfs2 Jul 17 13:22 rw,log=/dev/hd8
|
38
|
+
/dev/hd2 /usr jfs2 Jul 17 13:22 rw,log=/dev/hd8
|
39
|
+
/dev/hd9var /var jfs2 Jul 17 13:22 rw,log=/dev/hd8
|
40
|
+
/dev/hd3 /tmp jfs2 Jul 17 13:22 rw,log=/dev/hd8
|
41
|
+
/dev/hd1 /home jfs2 Jul 17 13:22 rw,log=/dev/hd8
|
42
|
+
/dev/hd11admin /admin jfs2 Jul 17 13:22 rw,log=/dev/hd8
|
43
|
+
/proc /proc procfs Jul 17 13:22 rw
|
44
|
+
/dev/hd10opt /opt jfs2 Jul 17 13:22 rw,log=/dev/hd8
|
45
|
+
192.168.1.11 /stage/middleware /stage/middleware nfs3 Jul 17 13:24 ro,bg,hard,intr,sec=sys
|
46
|
+
MOUNT
|
47
|
+
|
48
|
+
@ohai = Ohai::System.new
|
49
|
+
@ohai.stub(:require_plugin).and_return(true)
|
50
|
+
@ohai[:filesystem] = Mash.new
|
51
|
+
@ohai.stub(:popen4).with("df -P").and_yield(nil, StringIO.new, StringIO.new(@df_P), nil)
|
52
|
+
@ohai.stub(:popen4).with("mount").and_yield(nil, StringIO.new, StringIO.new(@mount), nil)
|
53
|
+
@ohai._require_plugin("aix::filesystem")
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "df -P" do
|
57
|
+
|
58
|
+
it "returns the filesystem block size" do
|
59
|
+
@ohai[:filesystem]["/dev/hd4"]['kb_size'].should == "786432"
|
60
|
+
end
|
61
|
+
|
62
|
+
it "returns the filesystem used space in kb" do
|
63
|
+
@ohai[:filesystem]["/dev/hd4"]['kb_used'].should == "495632"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "returns the filesystem available space in kb" do
|
67
|
+
@ohai[:filesystem]["/dev/hd4"]['kb_available'].should == "290800"
|
68
|
+
end
|
69
|
+
|
70
|
+
it "returns the filesystem capacity in percentage" do
|
71
|
+
@ohai[:filesystem]["/dev/hd4"]['percent_used'].should == "64%"
|
72
|
+
end
|
73
|
+
|
74
|
+
it "returns the filesystem mounted location" do
|
75
|
+
@ohai[:filesystem]["/dev/hd4"]['mount'].should == "/"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "mount" do
|
80
|
+
|
81
|
+
it "returns the filesystem mount location" do
|
82
|
+
@ohai[:filesystem]["/dev/hd4"]['mount'].should == "/"
|
83
|
+
end
|
84
|
+
|
85
|
+
it "returns the filesystem type" do
|
86
|
+
@ohai[:filesystem]["/dev/hd4"]['fs_type'].should == "jfs2"
|
87
|
+
end
|
88
|
+
|
89
|
+
it "returns the filesystem mount options" do
|
90
|
+
@ohai[:filesystem]["/dev/hd4"]['mount_options'].should == "rw,log=/dev/hd8"
|
91
|
+
end
|
92
|
+
|
93
|
+
# For entries like 192.168.1.11 /stage/middleware /stage/middleware nfs3 Jul 17 13:24 ro,bg,hard,intr,sec=sys
|
94
|
+
context "having node values" do
|
95
|
+
before do
|
96
|
+
@ohai.stub(:popen4).with("mount").and_yield(nil, StringIO.new, StringIO.new("192.168.1.11 /stage/middleware /stage/middleware nfs3 Jul 17 13:24 ro,bg,hard,intr,sec=sys"), nil)
|
97
|
+
end
|
98
|
+
it "returns the filesystem mount location" do
|
99
|
+
@ohai[:filesystem]["192.168.1.11:/stage/middleware"]['mount'].should == "/stage/middleware"
|
100
|
+
end
|
101
|
+
|
102
|
+
it "returns the filesystem type" do
|
103
|
+
@ohai[:filesystem]["192.168.1.11:/stage/middleware"]['fs_type'].should == "nfs3"
|
104
|
+
end
|
105
|
+
|
106
|
+
it "returns the filesystem mount options" do
|
107
|
+
@ohai[:filesystem]["192.168.1.11:/stage/middleware"]['mount_options'].should == "ro,bg,hard,intr,sec=sys"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Prabhu Das (<prabhu.das@clogeny.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
|
19
|
+
|
20
|
+
describe Ohai::System, "Aix hostname plugin" do
|
21
|
+
before(:each) do
|
22
|
+
@ohai = Ohai::System.new
|
23
|
+
@ohai.stub(:from).with("hostname").and_return("aix_admin")
|
24
|
+
@ohai._require_plugin("aix::hostname")
|
25
|
+
end
|
26
|
+
|
27
|
+
it_should_check_from("aix::hostname", "hostname", "hostname", "aix_admin")
|
28
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Prabhu Das (<prabhu.das@clogeny.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
|
19
|
+
|
20
|
+
describe Ohai::System, "AIX kernel plugin" do
|
21
|
+
before(:each) do
|
22
|
+
@ohai = Ohai::System.new
|
23
|
+
@ohai.stub(:from).with("uname -s").and_return("AIX")
|
24
|
+
@ohai.stub(:from).with("uname -r").and_return(1)
|
25
|
+
@ohai.stub(:from).with("uname -v").and_return(6)
|
26
|
+
@ohai.stub(:from).with("uname -p").and_return("powerpc")
|
27
|
+
@modules = Mash.new
|
28
|
+
@ohai[:kernel].stub(:modules).and_return(@modules)
|
29
|
+
@ohai._require_plugin("aix::kernel")
|
30
|
+
end
|
31
|
+
|
32
|
+
it "uname -s detects the name" do
|
33
|
+
@ohai[:kernel][:name].should == "aix"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "uname -r detects the release" do
|
37
|
+
@ohai[:kernel][:release].should == 1
|
38
|
+
end
|
39
|
+
|
40
|
+
it "uname -v detects the version" do
|
41
|
+
@ohai[:kernel][:version].should == 6
|
42
|
+
end
|
43
|
+
|
44
|
+
it "uname -p detects the machine" do
|
45
|
+
@ohai[:kernel][:machine].should == "powerpc"
|
46
|
+
end
|
47
|
+
|
48
|
+
it "detects the modules" do
|
49
|
+
@ohai[:kernel][:modules].should == @modules
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,258 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Prabhu Das (<prabhu.das@clogeny.com>)
|
3
|
+
# Copyright:: Copyright (c) 2013 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
|
19
|
+
|
20
|
+
describe Ohai::System, "AIX network plugin" do
|
21
|
+
|
22
|
+
before(:each) do
|
23
|
+
@route_n_get_0 = <<-ROUTE_N_GET_0
|
24
|
+
route to: default
|
25
|
+
destination: default
|
26
|
+
mask: default
|
27
|
+
gateway: 172.29.128.13
|
28
|
+
interface: en0
|
29
|
+
interf addr: 172.29.174.58
|
30
|
+
flags: <UP,GATEWAY,DONE>
|
31
|
+
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
|
32
|
+
0 0 0 0 0 0 0 -79
|
33
|
+
ROUTE_N_GET_0
|
34
|
+
|
35
|
+
@lsdev_Cc_if = <<-LSDEV_CC_IF
|
36
|
+
en0 Available Standard Ethernet Network Interface
|
37
|
+
LSDEV_CC_IF
|
38
|
+
|
39
|
+
@ifconfig_en0 = <<-IFCONFIG_EN0
|
40
|
+
en0: flags=1e080863,480<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT,CHECKSUM_OFFLOAD(ACTIVE),CHAIN> metric 1
|
41
|
+
inet 172.29.174.58 netmask 0xffffc000 broadcast 172.29.191.255
|
42
|
+
inet 172.29.174.59 broadcast 172.29.191.255
|
43
|
+
inet 172.29.174.60 netmask 0xffffc000 broadcast 172.29.191.255
|
44
|
+
inet6 ::1%1/0
|
45
|
+
tcp_sendspace 262144 tcp_recvspace 262144 rfc1323 1
|
46
|
+
IFCONFIG_EN0
|
47
|
+
|
48
|
+
@netstat_nrf_inet = <<-NETSTAT_NRF_INET
|
49
|
+
Destination Gateway Flags Refs Use If Exp Groups
|
50
|
+
Route Tree for Protocol Family 2 (Internet):
|
51
|
+
default 172.29.128.13 UG 0 587683 en0 - -
|
52
|
+
172.29.128.0 172.29.174.58 UHSb 0 0 en0 - - =>
|
53
|
+
172.29.128/18 172.29.174.58 U 7 1035485 en0 - -
|
54
|
+
172.29.191.255 172.29.174.58 UHSb 0 1 en0 - -
|
55
|
+
NETSTAT_NRF_INET
|
56
|
+
|
57
|
+
@aix_arp_an = <<-ARP_AN
|
58
|
+
? (172.29.131.16) at 6e:87:70:0:40:3 [ethernet] stored in bucket 16
|
59
|
+
|
60
|
+
? (10.153.50.202) at 34:40:b5:ab:fb:5a [ethernet] stored in bucket 40
|
61
|
+
|
62
|
+
? (10.153.1.99) at 52:54:0:8e:f2:fb [ethernet] stored in bucket 58
|
63
|
+
|
64
|
+
? (172.29.132.250) at 34:40:b5:a5:d7:1e [ethernet] stored in bucket 59
|
65
|
+
|
66
|
+
? (172.29.132.253) at 34:40:b5:a5:d7:2a [ethernet] stored in bucket 62
|
67
|
+
|
68
|
+
? (172.29.128.13) at 60:73:5c:69:42:44 [ethernet] stored in bucket 139
|
69
|
+
|
70
|
+
bucket: 0 contains: 0 entries
|
71
|
+
There are 6 entries in the arp table.
|
72
|
+
ARP_AN
|
73
|
+
|
74
|
+
@ohai = Ohai::System.new
|
75
|
+
@ohai.stub(:require_plugin).and_return(true)
|
76
|
+
@ohai[:network] = Mash.new
|
77
|
+
@ohai.stub(:popen4).with("route -n get 0").and_yield(nil, StringIO.new, StringIO.new(@route_n_get_0), nil)
|
78
|
+
@ohai.stub(:popen4).with("lsdev -Cc if").and_yield(nil, StringIO.new, StringIO.new(@lsdev_Cc_if), nil)
|
79
|
+
@ohai.stub(:popen4).with("ifconfig en0").and_yield(nil, StringIO.new, StringIO.new(@ifconfig_en0), nil)
|
80
|
+
@ohai.stub(:popen4).with("entstat -d en0 | grep \"Hardware Address\"").and_yield(nil, StringIO.new, StringIO.new("Hardware Address: be:42:80:00:b0:05"), nil)
|
81
|
+
@ohai.stub(:popen4).with("netstat -nrf inet").and_yield(nil, StringIO.new, StringIO.new(@netstat_nrf_inet), nil)
|
82
|
+
@ohai.stub(:popen4).with("netstat -nrf inet6").and_yield(nil, StringIO.new, StringIO.new("::1%1 ::1%1 UH 1 109392 en0 - -"), nil)
|
83
|
+
@ohai.stub(:popen4).with("arp -an").and_yield(nil, StringIO.new, StringIO.new(@aix_arp_an), nil)
|
84
|
+
@ohai._require_plugin("aix::network")
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "run" do
|
88
|
+
|
89
|
+
it "detects network information" do
|
90
|
+
@ohai['network'].should_not be_nil
|
91
|
+
end
|
92
|
+
|
93
|
+
it "detects the interfaces" do
|
94
|
+
@ohai['network']['interfaces'].keys.sort.should == ["en0"]
|
95
|
+
end
|
96
|
+
|
97
|
+
it "detects the ip addresses of the interfaces" do
|
98
|
+
@ohai['network']['interfaces']['en0']['addresses'].keys.should include('172.29.174.58')
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "route -n get 0" do
|
103
|
+
|
104
|
+
it "returns the default gateway of the system's network" do
|
105
|
+
@ohai[:network][:default_gateway].should == '172.29.128.13'
|
106
|
+
end
|
107
|
+
|
108
|
+
it "returns the default interface of the system's network" do
|
109
|
+
@ohai[:network][:default_interface].should == 'en0'
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "lsdev -Cc if" do
|
114
|
+
|
115
|
+
it "detects the state of the interfaces in the system" do
|
116
|
+
@ohai['network']['interfaces']['en0'][:state].should == "up"
|
117
|
+
end
|
118
|
+
|
119
|
+
it "detects the description of the interfaces in the system" do
|
120
|
+
@ohai['network']['interfaces']['en0'][:description].should == "Standard Ethernet Network Interface"
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "ifconfig interface" do
|
124
|
+
it "detects the CHAIN network flag" do
|
125
|
+
@ohai['network']['interfaces']['en0'][:flags].should include('CHAIN')
|
126
|
+
end
|
127
|
+
|
128
|
+
it "detects the metric network flag" do
|
129
|
+
@ohai['network']['interfaces']['en0'][:metric].should == '1'
|
130
|
+
end
|
131
|
+
|
132
|
+
context "inet entries" do
|
133
|
+
before do
|
134
|
+
@inet_entry = @ohai['network']['interfaces']['en0'][:addresses]["172.29.174.58"]
|
135
|
+
end
|
136
|
+
it "detects the family" do
|
137
|
+
@inet_entry[:family].should == 'inet'
|
138
|
+
end
|
139
|
+
|
140
|
+
it "detects the netmask" do
|
141
|
+
@inet_entry[:netmask].should == '255.255.192.0'
|
142
|
+
end
|
143
|
+
|
144
|
+
it "detects the broadcast" do
|
145
|
+
@inet_entry[:broadcast].should == '172.29.191.255'
|
146
|
+
end
|
147
|
+
|
148
|
+
it "detects all key-values" do
|
149
|
+
@ohai['network']['interfaces']['en0'][:tcp_sendspace].should == "262144"
|
150
|
+
@ohai['network']['interfaces']['en0'][:tcp_recvspace].should == "262144"
|
151
|
+
@ohai['network']['interfaces']['en0'][:rfc1323].should == "1"
|
152
|
+
end
|
153
|
+
|
154
|
+
# For an output with no netmask like inet 172.29.174.59 broadcast 172.29.191.255
|
155
|
+
context "with no netmask in the output" do
|
156
|
+
before do
|
157
|
+
@inet_entry = @ohai['network']['interfaces']['en0'][:addresses]["172.29.174.59"]
|
158
|
+
@ohai.stub(:popen4).with("ifconfig en0").and_yield(nil, StringIO.new, StringIO.new("inet 172.29.174.59 broadcast 172.29.191.255"), nil)
|
159
|
+
end
|
160
|
+
|
161
|
+
it "detects the default prefixlen" do
|
162
|
+
@inet_entry[:prefixlen].should == '32'
|
163
|
+
end
|
164
|
+
|
165
|
+
it "detects the default netmask" do
|
166
|
+
@inet_entry[:netmask].should == '255.255.255.255'
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
context "inet6 entries" do
|
172
|
+
before do
|
173
|
+
@inet_entry = @ohai['network']['interfaces']['en0'][:addresses]["::1%1"]
|
174
|
+
@ohai.stub(:popen4).with("ifconfig en0").and_yield(nil, StringIO.new, StringIO.new("inet6 ::1%1/0"), nil)
|
175
|
+
end
|
176
|
+
|
177
|
+
it "detects the prefixlen" do
|
178
|
+
@inet_entry[:prefixlen].should == '0'
|
179
|
+
end
|
180
|
+
|
181
|
+
it "detects the family" do
|
182
|
+
@inet_entry[:family].should == 'inet6'
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
context "entstat -d interface" do
|
188
|
+
before do
|
189
|
+
@inet_interface_addresses = @ohai['network']['interfaces']['en0'][:addresses]["BE:42:80:00:B0:05"]
|
190
|
+
end
|
191
|
+
it "detects the family" do
|
192
|
+
@inet_interface_addresses[:family].should == 'lladdr'
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
describe "netstat -nrf family" do
|
198
|
+
context "inet" do
|
199
|
+
|
200
|
+
it "detects the route destinations" do
|
201
|
+
@ohai['network']['interfaces']['en0'][:routes][0][:destination].should == "default"
|
202
|
+
@ohai['network']['interfaces']['en0'][:routes][1][:destination].should == "172.29.128.0"
|
203
|
+
end
|
204
|
+
|
205
|
+
it "detects the route family" do
|
206
|
+
@ohai['network']['interfaces']['en0'][:routes][0][:family].should == "inet"
|
207
|
+
end
|
208
|
+
|
209
|
+
it "detects the route gateway" do
|
210
|
+
@ohai['network']['interfaces']['en0'][:routes][0][:via].should == "172.29.128.13"
|
211
|
+
end
|
212
|
+
|
213
|
+
it "detects the route flags" do
|
214
|
+
@ohai['network']['interfaces']['en0'][:routes][0][:flags].should == "UG"
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
context "inet6" do
|
219
|
+
|
220
|
+
it "detects the route destinations" do
|
221
|
+
@ohai['network']['interfaces']['en0'][:routes][4][:destination].should == "::1%1"
|
222
|
+
end
|
223
|
+
|
224
|
+
it "detects the route family" do
|
225
|
+
@ohai['network']['interfaces']['en0'][:routes][4][:family].should == "inet6"
|
226
|
+
end
|
227
|
+
|
228
|
+
it "detects the route gateway" do
|
229
|
+
@ohai['network']['interfaces']['en0'][:routes][4][:via].should == "::1%1"
|
230
|
+
end
|
231
|
+
|
232
|
+
it "detects the route flags" do
|
233
|
+
@ohai['network']['interfaces']['en0'][:routes][4][:flags].should == "UH"
|
234
|
+
end
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
describe "arp -an" do
|
239
|
+
|
240
|
+
it "supresses the hostname entries" do
|
241
|
+
@ohai['network']['arp'][0][:remote_host].should == "?"
|
242
|
+
end
|
243
|
+
|
244
|
+
it "detects the remote ip entry" do
|
245
|
+
@ohai['network']['arp'][0][:remote_ip].should == "172.29.131.16"
|
246
|
+
end
|
247
|
+
|
248
|
+
it "detects the remote mac entry" do
|
249
|
+
@ohai['network']['arp'][0][:remote_mac].should == "6e:87:70:0:40:3"
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
describe "hex_to_dec_netmask method" do
|
254
|
+
it "converts a netmask from hexadecimal form to decimal form" do
|
255
|
+
@ohai.hex_to_dec_netmask('0xffff0000').should == "255.255.0.0"
|
256
|
+
end
|
257
|
+
end
|
258
|
+
end
|