Class: Beaker::Answers

Inherits:
Object
  • Object
show all
Defined in:
lib/beaker/answers.rb

Overview

This class provides methods for generating PE answer file information.

Direct Known Subclasses

Version20, Version28, Version30

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version, hosts, options) ⇒ Hash

When given a Puppet Enterprise version, a list of hosts and other qualifying data this method will return a hash (keyed from the hosts) of default Puppet Enterprise answer file data hashes.

Options Hash (options):

  • :type (Symbol)

    Should be one of :upgrade or :install.



60
61
62
63
64
# File 'lib/beaker/answers.rb', line 60

def initialize(version, hosts, options)
  @version = version
  @hosts = hosts
  @options = options
end

Class Method Details

.create(version, hosts, options) ⇒ Hash

When given a Puppet Enterprise version, a list of hosts and other qualifying data this method will return the appropriate object that can be used to generate answer file data.

Options Hash (options):

  • :type (Symbol)

    Should be one of :upgrade or :install.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/beaker/answers.rb', line 16

def self.create version, hosts, options
  case version
  when /\A4\.0/
    return Version34.new(version, hosts, options)
  when /\A3\.99/
    return Version40.new(version, hosts, options)
  when /\A3\.7/
    return Version34.new(version, hosts, options)
  when /\A3\.4/
    return Version34.new(version, hosts, options)
  when /\A3\.[2-3]/
    return Version32.new(version, hosts, options)
  when /\A3\.1/
    return Version30.new(version, hosts, options)
  when /\A3\.0/
    return Version30.new(version, hosts, options)
  when /\A2\.8/
    return Version28.new(version, hosts, options)
  when /\A2\.0/
    return Version20.new(version, hosts, options)
  else
    raise NotImplementedError, "Don't know how to generate answers for #{version}"
  end
end

Instance Method Details

#answer_for(options, q, default = nil) ⇒ String

The answer value for a provided question. Use the user answer when available, otherwise return the default

Options Hash (options):

  • :answer (Symbol)

    Contains a hash of user provided question name and answer value pairs.



46
47
48
# File 'lib/beaker/answers.rb', line 46

def answer_for(options, q, default = nil)
  options[:answers][q] ? options[:answers][q] : default
end

#answer_string(host) ⇒ String

This converts a data hash provided by answers, and returns a Puppet Enterprise compatible answer file ready for use.

end

Examples:

Generating an answer file for a series of hosts

hosts.each do |host|
  answers = Beaker::Answers.new("2.0", hosts, "master")
  create_remote_file host, "/mypath/answer", answers.answer_string(host, answers)


89
90
91
# File 'lib/beaker/answers.rb', line 89

def answer_string(host)
  answers[host.name].map { |k,v| "#{k}=#{v}" }.join("\n")
end

#answersHash

Access the answers hash for this version, host and option information. If the answers have not yet been calculated, generate them.



74
75
76
# File 'lib/beaker/answers.rb', line 74

def answers
  @answers ||= generate_answers
end

#generate_answersObject

Generate the answers hash based upon version, host and option information



67
68
69
# File 'lib/beaker/answers.rb', line 67

def generate_answers
  raise "This should be handled by subclasses!"
end