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:

  • a symbol representing the severity :error, :warning, or :ignore

API:

  • public

Constant Summary collapse

SEVERITIES =

API:

  • public

{ ignore: true, warning: true, error: true, deprecation: true }.freeze

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:

  • default severity if :error is not wanted as the default

API:

  • public



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}

API:

  • public



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:

  • the issue for which to set severity

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

API:

  • public



127
128
129
130
131
132
133
134
135
136
137
138
# File 'lib/puppet/pops/validation.rb', line 127

def []=(issue, level)
  unless issue.is_a? Issues::Issue
    raise Puppet::DevError.new(_("Attempt to set validation severity for something that is not an Issue. (Got %{issue})") % { issue: issue.class })
  end
  unless SEVERITIES[level]
    raise Puppet::DevError.new(_("Illegal severity level: %{level} for '%{issue_code}'") % { issue_code: issue.issue_code, level: level })
  end
  unless issue.demotable? || level == :error
    raise Puppet::DevError.new(_("Attempt to demote the hard issue '%{issue_code}' to %{level}") % { issue_code: issue.issue_code, level: level })
  end
  @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.

API:

  • private



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

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

#severity(issue) ⇒ Symbol

Returns the severity of the given issue.

Returns:

  • severity level :error, :warning, or :ignore

API:

  • public



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:

  • this implementation returns true for errors and warnings

API:

  • public



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

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