summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Smith <tsmith84@gmail.com>2016-05-11 11:38:48 -0700
committerTim Smith <tsmith@chef.io>2017-02-23 12:58:58 -0800
commit69b5754db868fd2fc8d24b3e7b9c7fa8831e555f (patch)
tree85d7eff1d2537410879bb8d390380a0dba4313c6
parent6b5c7dbffdf36eb5aad5586d7ef9f66894a1d04d (diff)
downloadohai-69b5754db868fd2fc8d24b3e7b9c7fa8831e555f.tar.gz
Update cloud plugin to parse new digital_ocean data
Signed-off-by: Tim Smith <tsmith84@gmail.com>
-rw-r--r--lib/ohai/plugins/cloud.rb10
-rw-r--r--spec/unit/plugins/cloud_spec.rb45
2 files changed, 36 insertions, 19 deletions
diff --git a/lib/ohai/plugins/cloud.rb b/lib/ohai/plugins/cloud.rb
index c204f292..551016d5 100644
--- a/lib/ohai/plugins/cloud.rb
+++ b/lib/ohai/plugins/cloud.rb
@@ -233,17 +233,17 @@ Ohai.plugin(:Cloud) do
# Fill cloud hash with linode values
def get_digital_ocean_values
- public_ipv4 = digital_ocean["networks"]["v4"].select { |address| address["type"] == "public" }
- private_ipv4 = digital_ocean["networks"]["v4"].select { |address| address["type"] == "private" }
- public_ipv6 = digital_ocean["networks"]["v6"].select { |address| address["type"] == "public" }
- private_ipv6 = digital_ocean["networks"]["v6"].select { |address| address["type"] == "private" }
+ 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
- cloud[:public_hostname] = digital_ocean["name"]
+ cloud[:public_hostname] = digital_ocean["hostname"]
cloud[:provider] = "digital_ocean"
end
diff --git a/spec/unit/plugins/cloud_spec.rb b/spec/unit/plugins/cloud_spec.rb
index bd2e9d02..83a59469 100644
--- a/spec/unit/plugins/cloud_spec.rb
+++ b/spec/unit/plugins/cloud_spec.rb
@@ -215,12 +215,31 @@ 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][:hostname] = "public.example.com"
+ @plugin[:digital_ocean][:interfaces] = Mash.new
+ @plugin[:digital_ocean][:interfaces] = {
+ "public" => [
+ {
+ "ipv4" => {
+ "ip_address" => "159.203.92.161",
+ "netmask" => "255.255.240.0",
+ "gateway" => "159.203.80.1",
+ },
+ "ipv6" => {
+ "ip_address" => "2604:A880:0800:00A1:0000:0000:0201:0001",
+ "cidr" => 64,
+ "gateway" => "2604:A880:0800:00A1:0000:0000:0000:0001",
+ },
+ "anchor_ipv4" => {
+ "ip_address" => "10.17.0.5",
+ "netmask" => "255.255.0.0",
+ "gateway" => "10.17.0.1",
+ },
+ "mac" => "04:01:e5:14:03:01",
+ "type" => "public",
+ },
+ ],
+ }
end
before(:each) do
@@ -236,29 +255,27 @@ describe Ohai::System, "plugin cloud" do
end
it "populates cloud public ips" do
- expect(@plugin[:cloud][:public_ips]).to eq(@plugin[:digital_ocean][:networks][:v4].select { |ip| ip["type"] == "public" } +
- @plugin[:digital_ocean][:networks][:v6].select { |ip| ip["type"] == "public" })
+ expect(@plugin[:cloud][:public_ips]).to eq([ "159.203.92.161", "2604:A880:0800:00A1:0000:0000:0201:0001" ])
end
it "populates cloud private ips" do
- expect(@plugin[:cloud][:private_ips]).to eq(@plugin[:digital_ocean][:networks][:v4].select { |ip| ip["type"] == "private" } +
- @plugin[:digital_ocean][:networks][:v6].select { |ip| ip["type"] == "private" })
+ expect(@plugin[:cloud][:private_ips]).to be_empty
end
it "populates cloud public_ipv4" do
- expect(@plugin[:cloud][:public_ipv4]).to eq(@plugin[:digital_ocean][:networks][:v4].find { |ip| ip["type"] == "public" })
+ expect(@plugin[:cloud][:public_ipv4]).to eq("159.203.92.161")
end
it "populates cloud local_ipv4" do
- expect(@plugin[:cloud][:local_ipv4]).to eq(@plugin[:digital_ocean][:networks][:v4].find { |ip| ip["type"] == "private" })
+ expect(@plugin[:cloud][:local_ipv4]).to be_nil
end
it "populates cloud public_ipv6" do
- expect(@plugin[:cloud][:public_ipv6]).to eq(@plugin[:digital_ocean][:networks][:v6].find { |ip| ip["type"] == "public" })
+ expect(@plugin[:cloud][:public_ipv6]).to eq("2604:A880:0800:00A1:0000:0000:0201:0001")
end
it "populates cloud local_ipv6" do
- expect(@plugin[:cloud][:local_ipv6]).to eq(@plugin[:digital_ocean][:networks][:v6].find { |ip| ip["type"] == "private" })
+ expect(@plugin[:cloud][:local_ipv6]).to be_nil
end
it "populates cloud provider" do