logstash/qa/rspec/commands/redhat.rb
Pere Urbon-Bayes 21777bae40 Collection of small bootstrap related fixes like
* make sure downloaded logstashes use the new (arch independant files name)
* add specific privileged bootstrap script for debian 8 that is able to install java8 for this distro
* wrap the bootstrap scripts within the platform class, like this logic is in one specific place to select platform specific components
* add platform specific bootstrap file for sles-12 and also scripts to download latest logstash rpm version
* add custom bootstrap script for ubuntu-1404 to be sure it loads all ca certificates into the system
* make the necessary changes to compile with the new package system
* correct logstash path usage
* remove unnecessary dependancy to rake inside the acceptance test framework
* fix script execution under ubuntu environments, making sure it runs on bash

Fixes #5350
2016-06-02 14:37:15 +00:00

67 lines
1.7 KiB
Ruby

# encoding: utf-8
require_relative "base"
module ServiceTester
class RedhatCommands < Base
def installed?(hosts, package)
stdout = ""
at(hosts, {in: :serial}) do |host|
cmd = exec!("yum list installed #{package}")
stdout = cmd.stdout
end
stdout.match(/^Installed Packages$/)
stdout.match(/^logstash.noarch/)
end
def package_for(version, base=ServiceTester::Base::LOCATION)
File.join(base, "logstash-#{version}.rpm")
end
def install(package, host=nil)
hosts = (host.nil? ? servers : Array(host))
errors = {}
at(hosts, {in: :serial}) do |_host|
cmd = sudo_exec!("yum install -y #{package}")
errors[_host] = cmd.stderr unless cmd.stderr.empty?
end
errors
end
def uninstall(package, host=nil)
hosts = (host.nil? ? servers : Array(host))
at(hosts, {in: :serial}) do |_|
sudo_exec!("yum remove -y #{package}")
end
end
def removed?(hosts, package)
stdout = ""
at(hosts, {in: :serial}) do |host|
cmd = sudo_exec!("yum list installed #{package}")
stdout = cmd.stderr
end
stdout.match(/^Error: No matching Packages to list$/)
end
def running?(hosts, package)
stdout = ""
at(hosts, {in: :serial}) do |host|
cmd = sudo_exec!("service #{package} status")
stdout = cmd.stdout
end
(
stdout.match(/Active: active \(running\)/) &&
stdout.match(/#{package}.service - #{package}/)
)
end
def service_manager(service, action, host=nil)
hosts = (host.nil? ? servers : Array(host))
at(hosts, {in: :serial}) do |_|
sudo_exec!("service #{service} #{action}")
end
end
end
end