summaryrefslogtreecommitdiff
path: root/spec/unit
diff options
context:
space:
mode:
authormarkgibbons <mark.gibbons@nordstrom.com>2016-02-18 12:55:13 -0800
committermarkgibbons <mark.gibbons@nordstrom.com>2016-03-08 11:22:36 -0800
commit30fe07895e4a3d5d96f74abf29e559329e8d09af (patch)
tree778df65218758edcb5641faa004a5007c4d66745 /spec/unit
parentafa250015c1b8babfd6b820c32e9548e5517012a (diff)
downloadohai-30fe07895e4a3d5d96f74abf29e559329e8d09af.tar.gz
solaris11_network: Handle solaris 11 zone interfaces
PHYSRUNNING is now a valid flag for an interface. The Solaris 11 zones "route -n get default” command output returns the interface name, net0, but not the specific instance net0:2. The output changed from Solaris 10 to Solaris 11. Use the verbose output "route -v -n get default" to find the interface index and use the name and index to find the full interface name from the ifconfig -a output.
Diffstat (limited to 'spec/unit')
-rw-r--r--spec/unit/plugins/solaris2/network_spec.rb41
1 files changed, 36 insertions, 5 deletions
diff --git a/spec/unit/plugins/solaris2/network_spec.rb b/spec/unit/plugins/solaris2/network_spec.rb
index 5283b068..0f1484ef 100644
--- a/spec/unit/plugins/solaris2/network_spec.rb
+++ b/spec/unit/plugins/solaris2/network_spec.rb
@@ -54,6 +54,9 @@ e1000g2:1: flags=201000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,CoS> mtu 1500 ind
net0: flags=40201000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,CoS,L3PROTECT> mtu 1500 index 2
inet 37.153.96.148 netmask fffffe00 broadcast 37.153.97.255
ether 90:b8:d0:16:9b:97
+net1:1: flags=100001000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4,PHYSRUNNING> mtu 1500 index 2
+ inet 10.16.125.36 netmask fffffe00 broadcast 10.16.125.255
+ ether 90:b8:d0:16:9b:97
ip.tun0: flags=2200851<UP,POINTOPOINT,RUNNING,MULTICAST,NONUD,IPv6> mtu 1480 index 3
inet tunnel src 109.146.85.57 tunnel dst 109.146.85.212
tunnel security settings --> use 'ipsecconf -ln -i ip.tun1'
@@ -103,7 +106,18 @@ NETSTAT_RN
destination: default
mask: default
gateway: 10.13.37.1
- interface: e1000g0
+ interface: e1000g0 index 3
+ flags: <UP,GATEWAY,DONE,STATIC>
+ recvpipe sendpipe ssthresh rtt,ms rttvar,ms hopcount mtu expire
+ 0 0 0 0 0 0 1500 0
+ROUTE_GET
+
+ @solaris11_route_get = <<-ROUTE_GET
+ route to: default
+destination: default
+ mask: default
+ gateway: 10.13.37.1
+ interface: net1 index 2
flags: <UP,GATEWAY,DONE,STATIC>
recvpipe sendpipe ssthresh rtt,ms rttvar,ms hopcount mtu expire
0 0 0 0 0 0 1500 0
@@ -117,13 +131,13 @@ ROUTE_GET
allow(@plugin).to receive(:shell_out).with("ifconfig -a").and_return(mock_shell_out(0, @solaris_route_get, ""))
allow(@plugin).to receive(:shell_out).with("arp -an").and_return(mock_shell_out(0, @solaris_arp_rn, ""))
- allow(@plugin).to receive(:shell_out).with("route -n get default").and_return(mock_shell_out(0, @soalris_route_get, ""))
+ allow(@plugin).to receive(:shell_out).with("route -v -n get default").and_return(mock_shell_out(0, @solaris_route_get, ""))
end
describe "gathering IP layer address info" do
before do
@stdout = double("Pipe, stdout, cmd=`route get default`", :read => @solaris_route_get)
- allow(@plugin).to receive(:shell_out).with("route -n get default").and_return(mock_shell_out(0, @solaris_route_get, ""))
+ allow(@plugin).to receive(:shell_out).with("route -v -n get default").and_return(mock_shell_out(0, @solaris_route_get, ""))
allow(@plugin).to receive(:shell_out).with("ifconfig -a").and_return(mock_shell_out(0, @solaris_ifconfig, ""))
@plugin.run
end
@@ -133,7 +147,7 @@ ROUTE_GET
end
it "detects the interfaces" do
- expect(@plugin["network"]["interfaces"].keys.sort).to eq(["e1000g0:3", "e1000g2:1", "eri0", "ip.tun0", "ip.tun0:1", "lo0", "lo0:3", "net0", "qfe1"])
+ expect(@plugin["network"]["interfaces"].keys.sort).to eq(["e1000g0:3", "e1000g2:1", "eri0", "ip.tun0", "ip.tun0:1", "lo0", "lo0:3", "net0", "net1:1", "qfe1"])
end
it "detects the ip addresses of the interfaces" do
@@ -149,12 +163,29 @@ ROUTE_GET
end
end
+ describe "gathering solaris 11 zone IP layer address info" do
+ before do
+ @stdout = double("Pipe, stdout, cmd=`route get default`", :read => @solaris11_route_get)
+ allow(@plugin).to receive(:shell_out).with("route -v -n get default").and_return(mock_shell_out(0, @solaris11_route_get, ""))
+ allow(@plugin).to receive(:shell_out).with("ifconfig -a").and_return(mock_shell_out(0, @solaris_ifconfig, ""))
+ @plugin.run
+ end
+
+ it "finds the flags for a PHYSRUNNING interface" do
+ expect(@plugin[:network][:interfaces]["net1:1"][:flags]).to eq(%w{ UP BROADCAST RUNNING MULTICAST IPv4 PHYSRUNNING })
+ end
+
+ it "finds the default interface for a solaris 11 zone" do
+ expect(@plugin[:network][:default_interface]).to eq("net1:1")
+ end
+ end
+
# TODO: specs for the arp -an stuff, check that it correctly adds the MAC addr to the right iface, etc.
describe "setting the node's default IP address attribute" do
before do
@stdout = double("Pipe, stdout, cmd=`route get default`", :read => @solaris_route_get)
- allow(@plugin).to receive(:shell_out).with("route -n get default").and_return(mock_shell_out(0, @solaris_route_get, ""))
+ allow(@plugin).to receive(:shell_out).with("route -v -n get default").and_return(mock_shell_out(0, @solaris_route_get, ""))
@plugin.run
end