logstash/qa/rspec/commands/suse.rb
Pere Urbon-Bayes ced5e5e020 Introduce the concept of a single spec for the tests, we removed the platform depant test as they where mostly similar, but only used with small platform dependant metadata, this all has been moved to factory methods. make sure platforms uses canonicals "former" names, so no "ubuntu" platfrom as is debian based, and no "centos" as is redhat based.
Also:

* Refactored the specs organization to make the resoning behind simplier,
introducing the idea of an artifact subject that it wraps the
interactions with the platform.

* Add methods to destroy, bootstrap and halt a list of machines either all of them or the ones listed under a given platform name.

* Introduced more clear namespacing in the rakefile.

* Updated the list of available platforms for acceptance testing, including latest ubuntu, oel, fedora, debian and suse versions

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

63 lines
1.7 KiB
Ruby

# encoding: utf-8
require_relative "base"
module ServiceTester
class SuseCommands < Base
def installed?(hosts, package)
stdout = ""
at(hosts, {in: :serial}) do |host|
cmd = exec!("zypper search #{package}")
stdout = cmd.stdout
end
stdout.match(/^i | logstash | An extensible logging pipeline | package$/)
end
def package_for(version)
File.join(ServiceTester::Base::LOCATION, "logstash-#{version}.noarch.rpm")
end
def install(package, host=nil)
hosts = (host.nil? ? servers : Array(host))
errors = {}
at(hosts, {in: :serial}) do |_host|
cmd = sudo_exec!("zypper --no-gpg-checks --non-interactive install #{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 |_|
cmd = sudo_exec!("zypper --no-gpg-checks --non-interactive remove #{package}")
end
end
def removed?(hosts, package)
stdout = ""
at(hosts, {in: :serial}) do |host|
cmd = exec!("zypper search #{package}")
stdout = cmd.stdout
end
stdout.match(/No packages found/)
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} started.$/)
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