module GClouder::Resources::Validate::Local

Public Class Methods

included(klass) click to toggle source
# File lib/gclouder/resources/validate/local.rb, line 9
def self.included(klass)
  klass.extend Local
end

Public Instance Methods

has_required_keys?(instance, required_keys, ignore_keys, indent: 3) click to toggle source

FIXME: this should probably recurse

# File lib/gclouder/resources/validate/local.rb, line 14
def has_required_keys?(instance, required_keys, ignore_keys, indent: 3)
  success = true

  required_keys["name"] = {
    "type" => "String",
    "required" => true
  }

  required_keys.each do |key, data|
    next if ignore_keys.include?(key)

    if !instance.key?(key)
      bad "#{key} is missing", indent: indent
      success = false
    end
  end

  success
end
has_unknown_keys?(instance, permitted_keys, ignore_keys, indent: 0) click to toggle source
# File lib/gclouder/resources/validate/local.rb, line 34
def has_unknown_keys?(instance, permitted_keys, ignore_keys, indent: 0)
  success = false

  # a name is required for every resources
  permitted_keys["name"] = {
    "type" => "String",
    "required" => true
  }

  instance.each do |key, value|
    next if ignore_keys.include?(key)

    if !permitted_keys.key?(key)
      bad "#{key} is an invalid key", indent: 4 + indent
      success = true
      next
    end

    required_type = Object.const_get(permitted_keys[key]["type"])

    if !value.is_a?(required_type)
      bad "#{key} invalid type: #{value.class} (should be: #{required_type})", indent: 4 + indent
      success = true
      next
    end

    good "#{key} is a #{required_type} (#{value})", indent: 4 + indent
  end

  success
end