# File lib/deltacloud/validation.rb, line 87
  def validate(all_params, values, credentials)
    all_params.each do |key, p|
      if p.required? and not values[p.name]
        raise Failure.new(p, "Required parameter #{p.name} not found")
      end
      next unless values[p.name]
      if p.hwp_property?
        profile = driver.hardware_profile(credentials, values['hwp_id'])
        unless p.valid_hwp_value?(profile, values[p.name])
          raise Failure.new(p, "Hardware profile property #{p.name} has invalid value #{values[p.name]}")
        end
      else
        if not p.options.empty? and p.valid_value?(values[p.name])
          raise Failure.new(p, "Parameter #{p.name} has value #{values[p.name]} which is not in #{p.options.join(", ")}")
        end
      end
    end
  end