From b79f0f71931fe5dd9e7817ebe9f6412ee2382a07 Mon Sep 17 00:00:00 2001 From: Steven Danna Date: Mon, 1 Aug 2016 13:24:19 +0100 Subject: [PATCH] Bring train platform data more in line with ohai's platform data This includes - `family` refers to the distribuion family while `name` refers to the spcific distribution. For example, the family attribute for ubuntu is `debian`. - The `redhat` family has been renamed `rhel` - Fedora is not listed as a `rhel` platform. --- lib/train/extras/os_common.rb | 15 +++++---------- lib/train/extras/os_detect_darwin.rb | 2 +- lib/train/extras/os_detect_linux.rb | 13 ++++++++++--- test/unit/extras/os_common_test.rb | 3 ++- test/unit/extras/os_detect_linux_test.rb | 18 ++++++++++++------ 5 files changed, 30 insertions(+), 21 deletions(-) diff --git a/lib/train/extras/os_common.rb b/lib/train/extras/os_common.rb index d3737930..59dbd8e8 100644 --- a/lib/train/extras/os_common.rb +++ b/lib/train/extras/os_common.rb @@ -38,15 +38,10 @@ def to_hash end OS = { # rubocop:disable Style/MutableConstant - 'redhat' => %w{ - redhat oracle centos fedora amazon scientific xenserver wrlinux - }, - 'debian' => %w{ - debian ubuntu linuxmint raspbian - }, - 'suse' => %w{ - suse opensuse - }, + 'redhat' => REDHAT_FAMILY, + 'debian' => DEBIAN_FAMILY, + 'suse' => SUSE_FAMILY, + 'fedora' => %w{fedora}, 'bsd' => %w{ freebsd netbsd openbsd darwin }, @@ -67,7 +62,7 @@ def to_hash }, } - OS['linux'] = %w{linux alpine arch coreos exherbo gentoo slackware} + OS['redhat'] + OS['debian'] + OS['suse'] + OS['linux'] = %w{linux alpine arch coreos exherbo gentoo slackware fedora} + OS['redhat'] + OS['debian'] + OS['suse'] OS['unix'] = %w{unix aix hpux} + OS['linux'] + OS['solaris'] + OS['bsd'] diff --git a/lib/train/extras/os_detect_darwin.rb b/lib/train/extras/os_detect_darwin.rb index 241a10e9..b626b6de 100644 --- a/lib/train/extras/os_detect_darwin.rb +++ b/lib/train/extras/os_detect_darwin.rb @@ -18,7 +18,7 @@ def detect_darwin # TODO: ditto on error return false if cmd.stdout.empty? - uname_m = @backend.run_command("uname -m").stdout.chomp + uname_m = @backend.run_command('uname -m').stdout.chomp return false if uname_m.empty? name = cmd.stdout[/^ProductName:\s+(.+)$/, 1] diff --git a/lib/train/extras/os_detect_linux.rb b/lib/train/extras/os_detect_linux.rb index e1be21e3..8bbfb58e 100644 --- a/lib/train/extras/os_detect_linux.rb +++ b/lib/train/extras/os_detect_linux.rb @@ -12,6 +12,10 @@ module Train::Extras module DetectLinux # rubocop:disable Metrics/ModuleLength + DEBIAN_FAMILY = %w{debian ubuntu linuxmint raspbian}.freeze + REDHAT_FAMILY = %w{centos redhat oracle scientific enterpriseenterprise amazon xenserver cloudlinux ibm_powerkvm nexus_centos wrlinux}.freeze + SUSE_FAMILY = %w{suse opensuse}.freeze + include Train::Extras::LinuxLSB def detect_linux_via_config # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity @@ -85,7 +89,7 @@ def detect_linux_via_config # rubocop:disable Metrics/AbcSize, Metrics/Cyclomati @platform[:release] = meta[:release] elsif !(os_info = fetch_os_release).nil? if os_info['ID_LIKE'] =~ /wrlinux/ - @platform[:name] = 'wrlinux' + @platform[:name] = 'wrlinux' @platform[:release] = os_info['VERSION'] end end @@ -96,9 +100,12 @@ def detect_linux_via_config # rubocop:disable Metrics/AbcSize, Metrics/Cyclomati end def family_for_platform - case @platform[:name] - when 'centos' + if DEBIAN_FAMILY.include?(@platform[:name]) + 'debian' + elsif REDHAT_FAMILY.include?(@platform[:name]) 'redhat' + elsif SUSE_FAMILY.include?(@platform[:name]) + 'suse' else @platform[:name] || @platform[:family] end diff --git a/test/unit/extras/os_common_test.rb b/test/unit/extras/os_common_test.rb index 71def801..054f7c67 100644 --- a/test/unit/extras/os_common_test.rb +++ b/test/unit/extras/os_common_test.rb @@ -57,7 +57,8 @@ def mock_platform(x) describe 'with platform set to fedora' do let(:os) { mock_platform('fedora') } - it { os.redhat?.must_equal(true) } + it { os.fedora?.must_equal(true) } + it { os.redhat?.must_equal(false) } it { os.debian?.must_equal(false) } it { os.suse?.must_equal(false) } it { os.linux?.must_equal(true) } diff --git a/test/unit/extras/os_detect_linux_test.rb b/test/unit/extras/os_detect_linux_test.rb index 3397570c..a85951d0 100644 --- a/test/unit/extras/os_detect_linux_test.rb +++ b/test/unit/extras/os_detect_linux_test.rb @@ -20,7 +20,7 @@ def initialize detector.stubs(:backend).returns(be) be.stubs(:run_command).with("uname -m").returns(mock("Output", stdout: "x86_64\n")) detector.detect_linux_architecture.must_equal(true) - detector.platform[:arch].must_equal("x84_64") + detector.platform[:arch].must_equal("x86_64") end end @@ -37,7 +37,8 @@ def initialize detector.stubs(:get_config).with('/etc/enterprise-release').returns('data') detector.detect_linux_via_config.must_equal(true) - detector.platform[:family].must_equal('oracle') + detector.platform[:name].must_equal('oracle') + detector.platform[:family].must_equal('redhat') detector.platform[:release].must_equal('redhat-version') end end @@ -64,7 +65,8 @@ def initialize detector.stubs(:lsb).returns({ id: 'ubuntu', release: 'ubuntu-release' }) detector.detect_linux_via_config.must_equal(true) - detector.platform[:family].must_equal('ubuntu') + detector.platform[:name].must_equal('ubuntu') + detector.platform[:family].must_equal('debian') detector.platform[:release].must_equal('ubuntu-release') end end @@ -74,7 +76,8 @@ def initialize detector.stubs(:lsb).returns({ id: 'linuxmint', release: 'mint-release' }) detector.detect_linux_via_config.must_equal(true) - detector.platform[:family].must_equal('linuxmint') + detector.platform[:name].must_equal('linuxmint') + detector.platform[:family].must_equal('debian') detector.platform[:release].must_equal('mint-release') end end @@ -85,7 +88,8 @@ def initialize detector.expects(:unix_file?).with('/usr/bin/raspi-config').returns(true) detector.detect_linux_via_config.must_equal(true) - detector.platform[:family].must_equal('raspbian') + detector.platform[:name].must_equal('raspbian') + detector.platform[:family].must_equal('debian') detector.platform[:release].must_equal('deb-version') end end @@ -96,6 +100,7 @@ def initialize detector.expects(:unix_file?).with('/usr/bin/raspi-config').returns(false) detector.detect_linux_via_config.must_equal(true) + detector.platform[:name].must_equal('debian') detector.platform[:family].must_equal('debian') detector.platform[:release].must_equal('deb-version') end @@ -125,7 +130,8 @@ def initialize detector.stubs(:fetch_os_release).returns(data) detector.detect_linux_via_config.must_equal(true) - detector.platform[:family].must_equal('wrlinux') + detector.platform[:name].must_equal('wrlinux') + detector.platform[:family].must_equal('redhat') detector.platform[:release].must_equal('cisco123') end end