summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith@chef.io>2017-03-21 22:04:03 -0700
committerTim Smith <tsmith@chef.io>2017-03-22 11:41:05 -0700
commit582b86312ba31a91dfec5e1e16556f60f4beab6b (patch)
treeb46ef17d22599a917151ee19cd3cb459f91a12bf
parentcab56af9f8e096f8ce0053e24d8f488c79708824 (diff)
downloadohai-do_cloud_fix.tar.gz
Fix the cloud plugins to properly report values on DOdo_cloud_fix
Signed-off-by: Tim Smith <tsmith@chef.io>
-rw-r--r--lib/ohai/plugins/cloud.rb24
-rw-r--r--lib/ohai/plugins/cloud_v2.rb11
-rw-r--r--spec/unit/plugins/cloud_spec.rb10
-rw-r--r--spec/unit/plugins/cloud_v2_spec.rb89
4 files changed, 80 insertions, 54 deletions
diff --git a/lib/ohai/plugins/cloud.rb b/lib/ohai/plugins/cloud.rb
index 551016d5..e24c6965 100644
--- a/lib/ohai/plugins/cloud.rb
+++ b/lib/ohai/plugins/cloud.rb
@@ -231,18 +231,20 @@ Ohai.plugin(:Cloud) do
digital_ocean != nil
end
- # Fill cloud hash with linode values
+ # Fill cloud hash with digital ocean values
def get_digital_ocean_values
- public_ipv4 = digital_ocean["interfaces"]["public"].map { |iface| iface["ipv4"]["ip_address"] }
- private_ipv4 = digital_ocean["interfaces"]["private"] ? digital_ocean["interfaces"]["private"].map { |iface| iface["ipv4"]["ip_address"] } : []
- public_ipv6 = digital_ocean["interfaces"]["public"].map { |iface| iface["ipv6"]["ip_address"] }
- private_ipv6 = digital_ocean["interfaces"]["private"] ? digital_ocean["interfaces"]["private"].map { |iface| iface["ipv6"]["ip_address"] } : []
- cloud[:public_ips].concat public_ipv4 + public_ipv6
- cloud[:private_ips].concat private_ipv4 + private_ipv6
- cloud[:public_ipv4] = public_ipv4.first
- cloud[:public_ipv6] = public_ipv6.first
- cloud[:local_ipv4] = private_ipv4.first
- cloud[:local_ipv6] = private_ipv6.first
+ public_ipv4 = digital_ocean["interfaces"]["public"][0]["ipv4"]["ip_address"] rescue nil
+ private_ipv4 = digital_ocean["interfaces"]["private"][0]["ipv4"]["ip_address"] rescue nil
+ public_ipv6 = digital_ocean["interfaces"]["public"][0]["ipv6"]["ip_address"] rescue nil
+ private_ipv6 = digital_ocean["interfaces"]["private"][0]["ipv6"]["ip_address"] rescue nil
+ cloud[:public_ips] << public_ipv4 unless public_ipv4.nil?
+ cloud[:public_ips] << public_ipv6 unless public_ipv6.nil?
+ cloud[:private_ips] << private_ipv4 unless private_ipv4.nil?
+ cloud[:private_ips] << private_ipv6 unless private_ipv6.nil?
+ cloud[:public_ipv4] = public_ipv4
+ cloud[:public_ipv6] = public_ipv6
+ cloud[:local_ipv4] = private_ipv4
+ cloud[:local_ipv6] = private_ipv6
cloud[:public_hostname] = digital_ocean["hostname"]
cloud[:provider] = "digital_ocean"
end
diff --git a/lib/ohai/plugins/cloud_v2.rb b/lib/ohai/plugins/cloud_v2.rb
index fceb4d3f..733108d8 100644
--- a/lib/ohai/plugins/cloud_v2.rb
+++ b/lib/ohai/plugins/cloud_v2.rb
@@ -285,13 +285,10 @@ Ohai.plugin(:CloudV2) do
# Fill cloud hash with digital_ocean values
def get_digital_ocean_values
- digital_ocean["networks"].each do |network, addresses|
- type = network == "v4" ? "ipv4" : "ipv6"
- addresses.each do |address|
- @cloud_attr_obj.send("add_#{type}_addr", address["ip_address"], address["type"].to_sym)
- end
- end
- @cloud_attr_obj.public_hostname = digital_ocean["name"]
+ @cloud_attr_obj.send("add_ipv4_addr", digital_ocean["interfaces"]["public"][0]["ipv4"]["ip_address"], :public) rescue NoMethodError
+ @cloud_attr_obj.send("add_ipv4_addr", digital_ocean["interfaces"]["private"][0]["ipv4"]["ip_address"], :private) rescue NoMethodError
+ @cloud_attr_obj.send("add_ipv6_addr", digital_ocean["interfaces"]["public"][0]["ipv6"]["ip_address"], :public) rescue NoMethodError
+ @cloud_attr_obj.send("add_ipv6_addr", digital_ocean["interfaces"]["private"][0]["ipv6"]["ip_address"], :private) rescue NoMethodError
@cloud_attr_obj.provider = "digital_ocean"
end
diff --git a/spec/unit/plugins/cloud_spec.rb b/spec/unit/plugins/cloud_spec.rb
index 83a59469..78865ba2 100644
--- a/spec/unit/plugins/cloud_spec.rb
+++ b/spec/unit/plugins/cloud_spec.rb
@@ -37,7 +37,7 @@ describe Ohai::System, "plugin cloud" do
describe "with EC2 mash" do
before do
- @plugin[:ec2] = Mash.new()
+ @plugin[:ec2] = Mash.new
end
it "populates cloud public ip" do
@@ -60,7 +60,7 @@ describe Ohai::System, "plugin cloud" do
describe "with rackspace" do
before do
- @plugin[:rackspace] = Mash.new()
+ @plugin[:rackspace] = Mash.new
end
it "populates cloud public ip" do
@@ -107,7 +107,7 @@ describe Ohai::System, "plugin cloud" do
describe "with linode mash" do
before do
- @plugin[:linode] = Mash.new()
+ @plugin[:linode] = Mash.new
end
it "populates cloud public ip" do
@@ -136,7 +136,7 @@ describe Ohai::System, "plugin cloud" do
describe "with eucalyptus mash" do
before do
- @plugin[:eucalyptus] = Mash.new()
+ @plugin[:eucalyptus] = Mash.new
end
it "populates cloud public ip" do
@@ -159,7 +159,7 @@ describe Ohai::System, "plugin cloud" do
describe "with Azure mash" do
before do
- @plugin[:azure] = Mash.new()
+ @plugin[:azure] = Mash.new
end
it "populates cloud private ip" do
diff --git a/spec/unit/plugins/cloud_v2_spec.rb b/spec/unit/plugins/cloud_v2_spec.rb
index fc736f95..d7f8654c 100644
--- a/spec/unit/plugins/cloud_v2_spec.rb
+++ b/spec/unit/plugins/cloud_v2_spec.rb
@@ -93,7 +93,7 @@ describe Ohai::System, "plugin cloud" do
describe "with EC2 mash" do
before do
- @plugin[:ec2] = Mash.new()
+ @plugin[:ec2] = Mash.new
end
it "populates cloud public ip" do
@@ -117,8 +117,8 @@ describe Ohai::System, "plugin cloud" do
describe "with GCE mash" do
describe "with a public IP" do
before do
- @plugin[:gce] = Mash.new()
- @plugin[:gce]["instance"] = Mash.new()
+ @plugin[:gce] = Mash.new
+ @plugin[:gce]["instance"] = Mash.new
@plugin[:gce]["instance"]["networkInterfaces"] = [
{
"accessConfigs" => [ { "externalIp" => "8.35.198.173", "type" => "ONE_TO_ONE_NAT" } ],
@@ -146,8 +146,8 @@ describe Ohai::System, "plugin cloud" do
describe "with no public IP" do
before do
- @plugin[:gce] = Mash.new()
- @plugin[:gce]["instance"] = Mash.new()
+ @plugin[:gce] = Mash.new
+ @plugin[:gce]["instance"] = Mash.new
@plugin[:gce]["instance"]["networkInterfaces"] = [
{
"accessConfigs" => [ { "externalIp" => "", "type" => "ONE_TO_ONE_NAT" } ],
@@ -176,7 +176,7 @@ describe Ohai::System, "plugin cloud" do
describe "with rackspace" do
before do
- @plugin[:rackspace] = Mash.new()
+ @plugin[:rackspace] = Mash.new
end
it "populates cloud public ip" do
@@ -223,7 +223,7 @@ describe Ohai::System, "plugin cloud" do
describe "with linode mash" do
before do
- @plugin[:linode] = Mash.new()
+ @plugin[:linode] = Mash.new
end
it "populates cloud public ip" do
@@ -252,7 +252,7 @@ describe Ohai::System, "plugin cloud" do
describe "with eucalyptus mash" do
before do
- @plugin[:eucalyptus] = Mash.new()
+ @plugin[:eucalyptus] = Mash.new
end
it "populates cloud public ip" do
@@ -275,7 +275,7 @@ describe Ohai::System, "plugin cloud" do
describe "with Azure mash" do
before do
- @plugin[:azure] = Mash.new()
+ @plugin[:azure] = Mash.new
end
it "populates cloud public ip" do
@@ -323,62 +323,89 @@ describe Ohai::System, "plugin cloud" do
describe "with digital_ocean mash" do
before do
@plugin[:digital_ocean] = Mash.new
- @plugin[:digital_ocean][:name] = "public.example.com"
- @plugin[:digital_ocean][:networks] = Mash.new
- @plugin[:digital_ocean][:networks][:v4] = [{ "ip_address" => "1.2.3.4", "type" => "public" },
- { "ip_address" => "5.6.7.8", "type" => "private" }]
- @plugin[:digital_ocean][:networks][:v6] = [{ "ip_address" => "fe80::4240:95ff:fe47:6eee", "type" => "public" },
- { "ip_address" => "fdf8:f53b:82e4::53", "type" => "private" }]
+ @plugin[:digital_ocean][:interfaces] = Mash.new
+ @plugin[:digital_ocean][:interfaces] = {
+ "private" =>
+ [
+ {
+ "ipv4" =>
+ {
+ "ip_address" => "10.135.32.4",
+ "netmask" => "255.255.0.0",
+ "gateway" => "10.135.0.1",
+ },
+ "mac" => "36:9e:23:65:c1:fe",
+ "type" => "private",
+ },
+ ],
+ "public" =>
+ [
+ {
+ "ipv4" =>
+ {
+ "ip_address" => "207.154.221.42",
+ "netmask" => "255.255.240.0",
+ "gateway" => "207.154.208.1",
+ },
+ "ipv6" =>
+ {
+ "ip_address" => "2A03:B0C0:0003:00D0:0000:0000:3B15:B001",
+ "cidr" => 64,
+ "gateway" => "2A03:B0C0:0003:00D0:0000:0000:0000:0001",
+ },
+ "anchor_ipv4" =>
+ {
+ "ip_address" => "10.19.0.5",
+ "netmask" => "255.255.0.0",
+ "gateway" => "10.19.0.1",
+ },
+ "mac" => "9a:80:15:02:7a:c1",
+ "type" => "public",
+ },
+ ],
+ }
end
before(:each) do
@plugin.run
end
- it "populates cloud public hostname" do
- expect(@plugin[:cloud_v2][:public_hostname]).to eq("public.example.com")
- end
-
it "populates cloud local hostname" do
expect(@plugin[:cloud_v2][:local_hostname]).to be_nil
end
it "populates cloud public_ipv4_addrs" do
- expect(@plugin[:cloud_v2][:public_ipv4_addrs]).to eq(@plugin[:digital_ocean][:networks][:v4].select { |ip| ip["type"] == "public" }
- .map { |ip| ip["ip_address"] })
+ expect(@plugin[:cloud_v2][:public_ipv4_addrs]).to eq(["207.154.221.42"])
end
it "populates cloud local_ipv4_addrs" do
- expect(@plugin[:cloud_v2][:local_ipv4_addrs]).to eq(@plugin[:digital_ocean][:networks][:v4].select { |ip| ip["type"] == "private" }
- .map { |ip| ip["ip_address"] })
+ expect(@plugin[:cloud_v2][:local_ipv4_addrs]).to eq(["10.135.32.4"])
end
it "populates cloud public_ipv4" do
- expect(@plugin[:cloud_v2][:public_ipv4]).to eq(@plugin[:digital_ocean][:networks][:v4].find { |ip| ip["type"] == "public" }["ip_address"])
+ expect(@plugin[:cloud_v2][:public_ipv4]).to eq("207.154.221.42")
end
it "populates cloud local_ipv4" do
- expect(@plugin[:cloud_v2][:local_ipv4]).to eq(@plugin[:digital_ocean][:networks][:v4].find { |ip| ip["type"] == "private" }["ip_address"])
+ expect(@plugin[:cloud_v2][:local_ipv4]).to eq("10.135.32.4")
end
it "populates cloud public_ipv6_addrs" do
- expect(@plugin[:cloud_v2][:public_ipv6_addrs]).to eq(@plugin[:digital_ocean][:networks][:v6].select { |ip| ip["type"] == "public" }
- .map { |ip| ip["ip_address"] })
+ expect(@plugin[:cloud_v2][:public_ipv6_addrs]).to eq(["2a03:b0c0:3:d0::3b15:b001"])
end
it "populates cloud local_ipv6_addrs" do
- expect(@plugin[:cloud_v2][:local_ipv6_addrs]).to eq(@plugin[:digital_ocean][:networks][:v6].select { |ip| ip["type"] == "private" }
- .map { |ip| ip["ip_address"] })
+ expect(@plugin[:cloud_v2][:local_ipv6_addrs]).to be_nil
end
it "populates cloud public_ipv6" do
- expect(@plugin[:cloud_v2][:public_ipv6]).to eq(@plugin[:digital_ocean][:networks][:v6].find { |ip| ip["type"] == "public" }["ip_address"])
+ expect(@plugin[:cloud_v2][:public_ipv6]).to eq("2a03:b0c0:3:d0::3b15:b001")
end
it "populates cloud local_ipv6" do
- expect(@plugin[:cloud_v2][:local_ipv6]).to eq(@plugin[:digital_ocean][:networks][:v6].find { |ip| ip["type"] == "private" }["ip_address"])
+ expect(@plugin[:cloud_v2][:local_ipv6]).to be_nil
end
it "populates cloud provider" do