class Beaker::Platform
This class create a Platform
object inheriting from String. It supports all String methods while adding several platform-specific use cases.
Constants
- PLATFORMS
Supported platforms
- PLATFORM_VERSION_CODES
Platform
version numbers vs. codenames conversion hash
Attributes
A string with the cpu architecture of the platform.
A string with the codename of the platform+version, nil on platforms without codenames.
A string with the name of the platform.
A string with the version number of the platform.
Public Class Methods
Creates the Platform
object. Checks to ensure that the platform String provided meets the platform formatting rules. Platforms name must be of the format /^OSFAMILY-VERSION-ARCH.*$/ where OSFAMILY is one of:
-
amazon
-
freebsd
-
openbsd
-
osx
-
centos
-
fedora
-
debian
-
oracle
-
redhat
-
redhatfips
-
scientific
-
opensuse
-
sles
-
ubuntu
-
windows
-
solaris
-
aix
-
el
-
archlinux
# File lib/beaker/platform.rb, line 59 def initialize(name) raise ArgumentError, "Unsupported platform name #{name}" if !PLATFORMS.match?(name) super @variant, version, @arch = self.split('-', 3) codename_version_hash = PLATFORM_VERSION_CODES[@variant.to_sym] @version = version @codename = nil return unless codename_version_hash if codename_version_hash[version] @codename = version @version = codename_version_hash[version] else version = version.delete('.') version_codename_hash = codename_version_hash.invert @codename = version_codename_hash[version] end end
Public Instance Methods
Return a list of packages that should always be present.
@return [Array<String>] A list of packages to install
# File lib/beaker/platform.rb, line 118 def base_packages case @variant when 'el' @version.to_i >= 8 ? ['iputils'] : %w[curl] when 'debian' %w[curl lsb-release] when 'freebsd' %w[curl perl5|perl] when 'solaris' @version.to_i >= 11 ? %w[curl] : %w[CSWcurl wget] when 'archlinux' %w[curl net-tools openssh] when 'amazon', 'fedora' ['iputils'] when 'aix', 'osx', 'windows' [] else %w[curl] end end
Return a list of packages that are needed for timesync
@return [Array<String>] A list of packages to install for timesync
# File lib/beaker/platform.rb, line 142 def timesync_packages return ['chrony'] if uses_chrony? case @variant when 'freebsd', 'openbsd', 'windows', 'aix', 'osx' [] when 'archlinux', 'opensuse' ['ntp'] when 'sles' @version.to_i >= 11 ? %w[ntp] : [] when 'solaris' @version.to_i >= 11 ? %w[ntp] : %w[CSWntp] else %w[ntpdate] end end
Returns array of attributes to allow single line assignment to local variables in DSL
and test case methods.
# File lib/beaker/platform.rb, line 84 def to_array return @variant, @version, @arch, @codename end
# File lib/beaker/platform.rb, line 104 def uses_chrony? case @variant when 'amazon', 'fedora' true when 'el' @version.to_i >= 8 else false end end
Returns the platform string with the platform version as a codename. If no conversion is necessary then the original, unchanged platform String is returned. @example Platform.new
(‘debian-7-xxx’).with_version_codename == ‘debian-wheezy-xxx’ @return [String] the platform string with the platform version represented as a codename
# File lib/beaker/platform.rb, line 92 def with_version_codename [@variant, @codename || @version, @arch].join('-') end
Returns the platform string with the platform version as a number. If no conversion is necessary then the original, unchanged platform String is returned. @example Platform.new
(‘debian-wheezy-xxx’).with_version_number == ‘debian-7-xxx’ @return [String] the platform string with the platform version represented as a number
# File lib/beaker/platform.rb, line 100 def with_version_number [@variant, @version, @arch].join('-') end