diff options
-rw-r--r-- | lib/ohai/plugins/linode.rb | 26 | ||||
-rw-r--r-- | spec/unit/plugins/linode_spec.rb | 23 |
2 files changed, 33 insertions, 16 deletions
diff --git a/lib/ohai/plugins/linode.rb b/lib/ohai/plugins/linode.rb index c4864afe..4acd8d67 100644 --- a/lib/ohai/plugins/linode.rb +++ b/lib/ohai/plugins/linode.rb @@ -18,23 +18,31 @@ Ohai.plugin(:Linode) do provides "linode" - depends "kernel" + depends "domain" depends "network/interfaces" - # Checks for matching linode kernel name + # Checks to see if the node is in the members.linode.com domain # - # Returns true or false - def has_linode_kernel? - if ( kernel_data = kernel ) - kernel_data[:release].split("-").last.include?("linode") - end + # @return [Boolean] + # + def has_linode_domain? + domain&.include?("linode") + end + + # Checks for linode mirrors in the apt sources.list file + # + # @return [Boolean] + # + def has_linode_apt_repos? + file_exist?("/etc/apt/sources.list") && file_read("/etc/apt/sources.list").include?("linode") end # Identifies the linode cloud by preferring the hint, then # - # Returns true or false + # @return [Boolean] + # def looks_like_linode? - hint?("linode") || has_linode_kernel? + hint?("linode") || has_linode_domain? || has_linode_apt_repos? end # Alters linode mash with new interface based on name parameter diff --git a/spec/unit/plugins/linode_spec.rb b/spec/unit/plugins/linode_spec.rb index ae5c2508..a591b564 100644 --- a/spec/unit/plugins/linode_spec.rb +++ b/spec/unit/plugins/linode_spec.rb @@ -20,8 +20,12 @@ require "spec_helper" describe Ohai::System, "plugin linode" do let(:plugin) { get_plugin("linode") } + let(:apt_sources) { "# \n\n# deb cdrom:[Ubuntu-Server 20.04.1 LTS _Focal Fossa_ - Release amd64 (20200731)]/ focal main restricted\n\n#deb cdrom:[Ubuntu-Server 20.04.1 LTS _Focal Fossa_ - Release amd64 (20200731)]/ focal main restricted\n\n# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to\n# newer versions of the distribution.\ndeb http://mirrors.linode.com/ubuntu/ focal main restricted\n# deb-src http://mirrors.linode.com/ubuntu/ focal main restricted\n\n## Major bug fix updates produced after the final release of the\n## distribution.\ndeb http://mirrors.linode.com/ubuntu/ focal-updates main restricted\n# deb-src http://mirrors.linode.com/ubuntu/ focal-updates main restricted\n\n## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu\n## team. Also, please note that software in universe WILL NOT receive any\n## review or updates from the Ubuntu security team.\ndeb http://mirrors.linode.com/ubuntu/ focal universe\n# deb-src http://mirrors.linode.com/ubuntu/ focal universe\ndeb http://mirrors.linode.com/ubuntu/ focal-updates universe\n# deb-src http://mirrors.linode.com/ubuntu/ focal-updates universe\n\n## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu \n## team, and may not be under a free licence. Please satisfy yourself as to \n## your rights to use the software. Also, please note that software in \n## multiverse WILL NOT receive any review or updates from the Ubuntu\n## security team.\ndeb http://mirrors.linode.com/ubuntu/ focal multiverse\n# deb-src http://mirrors.linode.com/ubuntu/ focal multiverse\ndeb http://mirrors.linode.com/ubuntu/ focal-updates multiverse\n# deb-src http://mirrors.linode.com/ubuntu/ focal-updates multiverse\n\n## N.B. software from this repository may not have been tested as\n## extensively as that contained in the main release, although it includes\n## newer versions of some applications which may provide useful features.\n## Also, please note that software in backports WILL NOT receive any review\n## or updates from the Ubuntu security team.\ndeb http://mirrors.linode.com/ubuntu/ focal-backports main restricted universe multiverse\n# deb-src http://mirrors.linode.com/ubuntu/ focal-backports main restricted universe multiverse\n\n## Uncomment the following two lines to add software from Canonical's\n## 'partner' repository.\n## This software is not part of Ubuntu, but is offered by Canonical and the\n## respective vendors as a service to Ubuntu users.\n# deb http://archive.canonical.com/ubuntu focal partner\n# deb-src http://archive.canonical.com/ubuntu focal partner\n\ndeb http://security.ubuntu.com/ubuntu focal-security main restricted\n# deb-src http://security.ubuntu.com/ubuntu focal-security main restricted\ndeb http://security.ubuntu.com/ubuntu focal-security universe\n# deb-src http://security.ubuntu.com/ubuntu focal-security universe\ndeb http://security.ubuntu.com/ubuntu focal-security multiverse\n# deb-src http://security.ubuntu.com/ubuntu focal-security multiverse\n\n# This system was installed using small removable media\n# (e.g. netinst, live or single CD). The matching \"deb cdrom\"\n# entries were disabled at the end of the installation process.\n# For information about how to configure apt package sources,\n# see the sources.list(5) manual.\n" } + before do allow(plugin).to receive(:collect_os).and_return(:linux) + allow(plugin).to receive(:file_exist?).with("/etc/apt/sources.list").and_return(false) + plugin[:domain] = "nope.example.com" plugin[:network] = { "interfaces" => { "eth0" => { @@ -70,17 +74,13 @@ describe Ohai::System, "plugin linode" do end - context "without linode kernel" do - before do - plugin[:kernel] = { "release" => "3.5.2-x86_64" } - end - + context "without linode domain or apt data" do it_behaves_like "!linode" end - context "with linode kernel" do + context "with linode domain" do before do - plugin[:kernel] = { "release" => "3.5.2-x86_64-linode24" } + plugin[:domain] = "members.linode.com" end it_behaves_like "linode" @@ -117,6 +117,15 @@ describe Ohai::System, "plugin linode" do end + describe "with linode apt sources" do + before do + allow(plugin).to receive(:file_exist?).with("/etc/apt/sources.list").and_return(true) + allow(plugin).to receive(:file_read).with("/etc/apt/sources.list").and_return(apt_sources) + end + + it_behaves_like "linode" + end + describe "with linode hint file" do before do allow(plugin).to receive(:hint?).with("linode").and_return({}) |