logstash/qa/rspec/commands.rb
Pere Urbon-Bayes e52bda64c6 Introduction of an update scenario for artifacts, including snapshot/restore for VM's and initial schema for this scenario.
Some other minor changes include:

* add back the user level boostrap scripts, useful in that case to pull latest released LS
* cleanup formatting for specs and fixed bootstrap scripts for redhats
* make the latest logstash version available from the current platform config file
* make sure debian based machines use java8
* make sure to use hostname and not just ip:port address when reporting the names

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

84 lines
1.5 KiB
Ruby

# encoding: utf-8
require_relative "./commands/debian"
require_relative "./commands/ubuntu"
require_relative "./commands/redhat"
require_relative "./commands/suse"
require "forwardable"
module ServiceTester
class Artifact
extend Forwardable
def_delegators :@client, :installed?, :removed?, :running?
attr_reader :host, :client
def initialize(host, options={})
@host = host
@options = options
@client = CommandsFactory.fetch(options["type"], options["host"])
end
def hostname
@options["host"]
end
def name
"logstash"
end
def hosts
[@host]
end
def snapshot
client.snapshot(@options["host"])
end
def restore
client.restore(@options["host"])
end
def start_service
client.start_service(name, host)
end
def stop_service
client.stop_service(name, host)
end
def install(version, base=ServiceTester::Base::LOCATION)
package = client.package_for(version, base)
client.install(package, host)
end
def uninstall
client.uninstall(name, host)
end
def to_s
"Artifact #{name}@#{host}"
end
end
class CommandsFactory
def self.fetch(type, host)
case type
when "debian"
if host.start_with?("ubuntu")
return UbuntuCommands.new
else
return DebianCommands.new
end
when "suse"
return SuseCommands.new
when "redhat"
return RedhatCommands.new
else
return
end
end
end
end