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

arch[R]

A string with the cpu architecture of the platform.

codename[R]

A string with the codename of the platform+version, nil on platforms without codenames.

variant[R]

A string with the name of the platform.

version[R]

A string with the version number of the platform.

Public Class Methods

new(name) click to toggle source

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

Calls superclass method
# 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

base_packages() click to toggle source

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
timesync_packages() click to toggle source

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
to_array() click to toggle source

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
uses_chrony?() click to toggle source
# 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
with_version_codename() click to toggle source

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
with_version_number() click to toggle source

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