Class: ForemanMaintain::Scenario
Defined Under Namespace
Classes: FilteredScenario, PreparationScenario
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
check, detector, feature, find_all_scenarios, find_checks, find_procedures, find_scenarios, procedure
included, #run_strategy
#check_min_version, #clean_all_packages, #create_lv_snapshot, #directory_empty?, #downstream_installation?, #execute, #execute!, #execute?, #execute_with_status, #file_exists?, #find_dir_containing_file, #find_package, #find_symlinks, #format_shell_args, #get_lv_info, #get_lv_path, #hostname, included, #package_version, #packages_action, #parse_csv, #parse_json, #rpm_version, #server?, #service_exists?, #shellescape, #smart_proxy?, #systemd_installed?, #version
#logger
Constructor Details
#initialize(context_data = {}) ⇒ Scenario
Returns a new instance of Scenario.
82
83
84
85
86
87
|
# File 'lib/foreman_maintain/scenario.rb', line 82
def initialize(context_data = {})
@steps = []
@context = Context.new(context_data)
set_context_mapping
compose
end
|
Instance Attribute Details
#context ⇒ Object
Returns the value of attribute context.
9
10
11
|
# File 'lib/foreman_maintain/scenario.rb', line 9
def context
@context
end
|
#steps ⇒ Object
Returns the value of attribute steps.
9
10
11
|
# File 'lib/foreman_maintain/scenario.rb', line 9
def steps
@steps
end
|
Class Method Details
.inspect ⇒ Object
168
169
170
|
# File 'lib/foreman_maintain/scenario.rb', line 168
def self.inspect
"Scenario Class #{metadata[:description]}<#{name}>"
end
|
.new_from_hash(hash) ⇒ Object
181
182
183
184
185
186
187
188
189
|
# File 'lib/foreman_maintain/scenario.rb', line 181
def self.new_from_hash(hash)
scenarios = find_all_scenarios(:label => hash[:label])
unless scenarios.size == 1
raise "Could not find scenario #{hash[:label]}, found #{scenarios.size} scenarios"
end
scenario = scenarios.first
scenario.load_step_states(hash[:steps])
scenario
end
|
Instance Method Details
#add_step(step) ⇒ Object
154
155
156
|
# File 'lib/foreman_maintain/scenario.rb', line 154
def add_step(step)
add_steps([step]) unless step.nil?
end
|
#add_step_with_context(definition, extra_params = {}) ⇒ Object
158
159
160
161
162
|
# File 'lib/foreman_maintain/scenario.rb', line 158
def add_step_with_context(definition, = {})
if definition.present?
add_step(definition.send(:new, context.params_for(definition).merge()))
end
end
|
#add_steps(steps) ⇒ Object
148
149
150
151
152
|
# File 'lib/foreman_maintain/scenario.rb', line 148
def add_steps(steps)
steps.each do |step|
self.steps << step.ensure_instance
end
end
|
#add_steps_with_context(*definitions) ⇒ Object
164
165
166
|
# File 'lib/foreman_maintain/scenario.rb', line 164
def add_steps_with_context(*definitions)
definitions.flatten.each { |definition| add_step_with_context(definition) }
end
|
#before_scenarios ⇒ Object
scenarios to be run before this scenario
141
142
143
144
145
146
|
# File 'lib/foreman_maintain/scenario.rb', line 141
def before_scenarios
scenarios = []
preparation_scenario = PreparationScenario.new(self)
scenarios << [preparation_scenario] unless preparation_scenario.steps.empty?
scenarios
end
|
#compose ⇒ Object
Override to compose steps for the scenario
90
|
# File 'lib/foreman_maintain/scenario.rb', line 90
def compose; end
|
#executed_steps ⇒ Object
103
104
105
|
# File 'lib/foreman_maintain/scenario.rb', line 103
def executed_steps
steps.find_all(&:executed?)
end
|
#failed? ⇒ Boolean
136
137
138
|
# File 'lib/foreman_maintain/scenario.rb', line 136
def failed?
!passed?
end
|
#filter_whitelisted(steps, options) ⇒ Object
119
120
121
122
123
124
125
126
127
128
|
# File 'lib/foreman_maintain/scenario.rb', line 119
def filter_whitelisted(steps, options)
options.validate_options!(:whitelisted)
if options.key?(:whitelisted)
steps.select do |step|
options[:whitelisted] ? step.whitelisted? : !step.whitelisted?
end
else
steps
end
end
|
#inspect ⇒ Object
172
173
174
|
# File 'lib/foreman_maintain/scenario.rb', line 172
def inspect
"#{self.class.metadata[:description]}<#{self.class.name}>"
end
|
#load_step_states(steps_hash) ⇒ Object
191
192
193
194
195
196
197
198
199
200
201
202
|
# File 'lib/foreman_maintain/scenario.rb', line 191
def load_step_states(steps_hash)
steps = self.steps.dup
steps_hash.each do |step_hash|
until steps.empty?
step = steps.shift
if step.matches_hash?(step_hash)
step.update_from_hash(step_hash)
break
end
end
end
end
|
#passed? ⇒ Boolean
130
131
132
133
134
|
# File 'lib/foreman_maintain/scenario.rb', line 130
def passed?
(steps_with_abort(:whitelisted => false) +
steps_with_error(:whitelisted => false) +
steps_with_warning(:whitelisted => false)).empty?
end
|
#preparation_steps ⇒ Object
95
96
97
98
99
100
101
|
# File 'lib/foreman_maintain/scenario.rb', line 95
def preparation_steps
steps.inject(super.dup) do |results, step|
results.concat(step.preparation_steps)
end.uniq
end
|
#set_context_mapping ⇒ Object
Override to map context for the scenario
93
|
# File 'lib/foreman_maintain/scenario.rb', line 93
def set_context_mapping; end
|
#steps_with_abort(options = {}) ⇒ Object
111
112
113
|
# File 'lib/foreman_maintain/scenario.rb', line 111
def steps_with_abort(options = {})
filter_whitelisted(executed_steps.find_all(&:aborted?), options)
end
|
#steps_with_error(options = {}) ⇒ Object
107
108
109
|
# File 'lib/foreman_maintain/scenario.rb', line 107
def steps_with_error(options = {})
filter_whitelisted(executed_steps.find_all(&:fail?), options)
end
|
#steps_with_warning(options = {}) ⇒ Object
115
116
117
|
# File 'lib/foreman_maintain/scenario.rb', line 115
def steps_with_warning(options = {})
filter_whitelisted(executed_steps.find_all(&:warning?), options)
end
|
#to_hash ⇒ Object
176
177
178
179
|
# File 'lib/foreman_maintain/scenario.rb', line 176
def to_hash
{ :label => label,
:steps => steps.map(&:to_hash) }
end
|