Class: Puppet::Pops::Validation::SeverityProducer

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet/pops/validation.rb

Overview

Decides on the severity of a given issue. The produced severity is one of ‘:error`, `:warning`, or `:ignore`. By default, a severity of `:error` is produced for all issues. To configure the severity of an issue call `#severity=(issue, level)`.

Returns:

  • (Symbol)

    a symbol representing the severity ‘:error`, `:warning`, or `:ignore`

Constant Summary collapse

@@severity_hash =
{:ignore => true, :warning => true, :error => true, :deprecation => true }

Instance Method Summary collapse

Constructor Details

#initialize(default_severity = :error) ⇒ SeverityProducer

Creates a new instance where all issues are diagnosed as :error unless overridden.

Parameters:

  • specifies (Symbol)

    default severity if :error is not wanted as the default



100
101
102
103
# File 'lib/puppet/pops/validation.rb', line 100

def initialize(default_severity = :error)
  # If diagnose is not set, the default is returned by the block
  @severities = Hash.new default_severity
end

Instance Method Details

#[](issue) ⇒ Object

See Also:

  • Puppet::Pops::Validation::SeverityProducer.{{#severity}


117
118
119
# File 'lib/puppet/pops/validation.rb', line 117

def [] issue
  severity issue
end

#[]=(issue, level) ⇒ Object

Override a default severity with the given severity level.

Parameters:

  • issue (Issues::Issue)

    the issue for which to set severity

  • level (Symbol)

    the severity level (:error, :warning, or :ignore).

Raises:



127
128
129
130
131
132
# File 'lib/puppet/pops/validation.rb', line 127

def []=(issue, level)
  raise Puppet::DevError.new("Attempt to set validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a? Issues::Issue
  raise Puppet::DevError.new("Illegal severity level: #{level} for '#{issue.issue_code}'") unless @@severity_hash[level]
  raise Puppet::DevError.new("Attempt to demote the hard issue '#{issue.issue_code}' to #{level}") unless issue.demotable? || level == :error
  @severities[issue] = level
end

#assert_issue(issue) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Checks if the given issue is valid.

Raises:



147
148
149
# File 'lib/puppet/pops/validation.rb', line 147

def assert_issue issue
  raise Puppet::DevError.new("Attempt to get validation severity for something that is not an Issue. (Got #{issue.class})") unless issue.is_a? Issues::Issue
end

#assert_severity(level) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Checks if the given severity level is valid.

Raises:



154
155
156
# File 'lib/puppet/pops/validation.rb', line 154

def assert_severity level
  raise Puppet::DevError.new("Illegal severity level: #{option}") unless @@severity_hash[level]
end

#severity(issue) ⇒ Symbol

Returns the severity of the given issue.

Returns:

  • (Symbol)

    severity level :error, :warning, or :ignore



109
110
111
112
# File 'lib/puppet/pops/validation.rb', line 109

def severity(issue)
  assert_issue(issue)
  @severities[issue]
end

#should_report?(issue) ⇒ Boolean

Returns ‘true` if the issue should be reported or not.

Returns:

  • (Boolean)

    this implementation returns true for errors and warnings



139
140
141
142
# File 'lib/puppet/pops/validation.rb', line 139

def should_report? issue
  diagnose = @severities[issue]
  diagnose == :error || diagnose == :warning || diagnose == :deprecation
end