logstash/qa/rspec/commands/redhat.rb
Pier-Hugues Pellerin eed32abb3d Migration of the CLI script to run under Vagrant VMs.
This is the First pass to add the `integration` test for the CLI, the
Logstash and the logstash-plugin command.

Fixes #5259

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

64 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(/^#{package} is running$/)
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