class Kitchen::Pulumi::ConfigAttributeDefiner

This class defines attributes consumed from .kitchen.yml and used in the Test Kitchen plugins.

Public Class Methods

new(attribute:, schema:) click to toggle source
# File lib/kitchen/pulumi/config_attribute_definer.rb, line 10
def initialize(attribute:, schema:)
  @attribute = attribute.to_sym
  @schema = schema
end

Public Instance Methods

define(plugin_class:) click to toggle source
# File lib/kitchen/pulumi/config_attribute_definer.rb, line 15
def define(plugin_class:)
  plugin_class.required_config(@attribute) do |_attribute, value, _plugin|
    schema_messages = @schema.call(value: value).messages
    process_schema_messages(messages: schema_messages,
                            plugin_class: plugin_class)
  end

  plugin_class.default_config(@attribute) do |plugin|
    plugin.send "config_#{@attribute}_default_value"
  end
end

Private Instance Methods

process_schema_messages(messages:, plugin_class:) click to toggle source
# File lib/kitchen/pulumi/config_attribute_definer.rb, line 29
def process_schema_messages(messages:, plugin_class:)
  return true if messages.empty?

  raise(
    ::Kitchen::UserError,
    "#{plugin_class} config: #{@attribute} #{messages}",
  )
end