Module: ForemanMaintain::Concerns::Metadata::ClassMethods

Includes:
Finders
Defined in:
lib/foreman_maintain/concerns/metadata.rb

Instance Method Summary collapse

Methods included from Finders

#check, #detector, #feature, #find_all_scenarios, #find_checks, #find_procedures, #find_scenarios, #procedure

Instance Method Details

#abstract_classObject

Override if the class should be used as parent class only. By default, we assume the class that does’t inherit from class with Metadata is abstract = the base class of particular concept



116
117
118
# File 'lib/foreman_maintain/concerns/metadata.rb', line 116

def abstract_class
  !(superclass < Metadata)
end

#afterObject



169
170
171
# File 'lib/foreman_maintain/concerns/metadata.rb', line 169

def after
  [:after] || []
end

#all_sub_classes(ignore_abstract_classes = true) ⇒ Object



128
129
130
131
132
133
134
135
# File 'lib/foreman_maintain/concerns/metadata.rb', line 128

def all_sub_classes(ignore_abstract_classes = true)
  ret = []
  ret << self if !ignore_abstract_classes || !abstract_class
  sub_classes.each do |sub_class|
    ret.concat(sub_class.all_sub_classes(ignore_abstract_classes))
  end
  ret
end

#autodetect?Boolean

Returns:

  • (Boolean)


124
125
126
# File 'lib/foreman_maintain/concerns/metadata.rb', line 124

def autodetect?
  .fetch(:autodetect, true)
end

#beforeObject



165
166
167
# File 'lib/foreman_maintain/concerns/metadata.rb', line 165

def before
  [:before] || []
end

#descriptionObject



153
154
155
# File 'lib/foreman_maintain/concerns/metadata.rb', line 153

def description
  [:description] || to_s
end

#inherited(klass) ⇒ Object



109
110
111
# File 'lib/foreman_maintain/concerns/metadata.rb', line 109

def inherited(klass)
  sub_classes << klass
end

#initialize_metadataObject



177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/foreman_maintain/concerns/metadata.rb', line 177

def 
  { :tags => [],
    :confine_blocks => [],
    :params => {},
    :preparation_steps_blocks => [],
    :before => [],
    :after => [] }.tap do ||
    if superclass.respond_to?(:metadata)
      [:label] = superclass.[:label]
    end
  end
end

#labelObject



149
150
151
# File 'lib/foreman_maintain/concerns/metadata.rb', line 149

def label
  [:label] || generate_label
end

#metadata(&block) ⇒ Object



137
138
139
140
141
142
143
# File 'lib/foreman_maintain/concerns/metadata.rb', line 137

def (&block)
  @metadata ||= 
  if block
    .eval_dsl(@metadata, &block)
  end
  @metadata
end

#metadata_classObject



145
146
147
# File 'lib/foreman_maintain/concerns/metadata.rb', line 145

def 
  DSL
end

#paramsObject



161
162
163
# File 'lib/foreman_maintain/concerns/metadata.rb', line 161

def params
  [:params] || {}
end

#preparation_steps(recursion_depth = 0, trace = []) ⇒ Object



194
195
196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/foreman_maintain/concerns/metadata.rb', line 194

def preparation_steps(recursion_depth = 0, trace = [])
  raise "Too many dependent steps #{trace}" if recursion_depth > MAX_PREPARATION_STEPS_DEPTH
  return @preparation_steps if defined?(@preparation_steps)
  preparation_steps = [:preparation_steps_blocks].map(&:call)
  preparation_steps.each { |step| raise ArgumentError unless step.is_a?(Executable) }
  all_preparation_steps = []
  preparation_steps.each do |step|
    all_preparation_steps.concat(
      step.preparation_steps(recursion_depth + 1, trace + [step])
    )
    all_preparation_steps << step
  end
  @preparation_steps = all_preparation_steps
end

#present?Boolean

Returns:

  • (Boolean)


190
191
192
# File 'lib/foreman_maintain/concerns/metadata.rb', line 190

def present?
  evaluate_confines
end

#run_once?Boolean

Returns:

  • (Boolean)


173
174
175
# File 'lib/foreman_maintain/concerns/metadata.rb', line 173

def run_once?
  [:run_once]
end

#sub_classesObject



120
121
122
# File 'lib/foreman_maintain/concerns/metadata.rb', line 120

def sub_classes
  @sub_classes ||= []
end

#tagsObject



157
158
159
# File 'lib/foreman_maintain/concerns/metadata.rb', line 157

def tags
  [:tags]
end