You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2012/03/13 14:42:45 UTC
[PATCH core 5/6] Core: Removed Failure exception from validation
From: Michal Fojtik <mf...@redhat.com>
Previously we had two exceptions defined to handle the 400
errors (like params validation). This patch will remove
the one defined in validation.rb and re-use the one from
exception handling system.
All validation errors (400) should be now treated with
ValidationFailure exception from exceptions.rb.
Signed-off-by: Michal fojtik <mf...@redhat.com>
---
.../drivers/terremark/terremark_driver.rb | 4 ++-
server/lib/deltacloud/server.rb | 4 ++-
server/lib/deltacloud/validation.rb | 23 +++++++-------------
3 files changed, 14 insertions(+), 17 deletions(-)
diff --git a/server/lib/deltacloud/drivers/terremark/terremark_driver.rb b/server/lib/deltacloud/drivers/terremark/terremark_driver.rb
index c93bfb3..da58364 100644
--- a/server/lib/deltacloud/drivers/terremark/terremark_driver.rb
+++ b/server/lib/deltacloud/drivers/terremark/terremark_driver.rb
@@ -141,7 +141,9 @@ VAPP_STATE_MAP = { "0" => "PENDING", "1" => "PENDING", "2" => "STOPPED", "4"
end
unless ( (terremark_hwp.include?(:cpu, opts[:hwp_cpu].to_i)) &&
(terremark_hwp.include?(:memory, opts[:hwp_memory].to_i)) ) then
- raise Deltacloud::Validation::Failure.new(Deltacloud::Validation::Param.new(["cpu"]), "Error with cpu and/or memory values. you said cpu->#{opts[:hwp_cpu]} and mem->#{opts[:hwp_memory]}")
+ raise Deltacloud::ExceptionHandler::ValidationFailure.new(
+ StandardError.new("Error with cpu and/or memory values. you said cpu->#{opts[:hwp_cpu]} and mem->#{opts[:hwp_memory]}")
+ )
end
vapp_opts['cpus'] = opts[:hwp_cpu]
vapp_opts['memory'] = opts[:hwp_memory]
diff --git a/server/lib/deltacloud/server.rb b/server/lib/deltacloud/server.rb
index d47c87f..b845616 100644
--- a/server/lib/deltacloud/server.rb
+++ b/server/lib/deltacloud/server.rb
@@ -1245,7 +1245,9 @@ collection :firewalls do
params['addresses'] = addresses
params['groups'] = groups
if addresses.empty? && groups.empty?
- raise Deltacloud::Validation::Failure.new(nil, "No sources. Specify at least one source ip_address or group")
+ raise Deltacloud::ExceptionHandler::ValidationFailure.new(
+ StandardError.new("No sources. Specify at least one source ip_address or group")
+ )
end
driver.create_firewall_rule(credentials, params)
@firewall = driver.firewall(credentials, {:id => params[:id]})
diff --git a/server/lib/deltacloud/validation.rb b/server/lib/deltacloud/validation.rb
index e14c532..3d29225 100644
--- a/server/lib/deltacloud/validation.rb
+++ b/server/lib/deltacloud/validation.rb
@@ -16,17 +16,6 @@
module Deltacloud::Validation
- class Failure < Deltacloud::ExceptionHandler::DeltacloudException
- attr_reader :param
- def initialize(e, message=nil)
- message ||= e.message
- super(400, e.class.name, message, [])
- end
- def name
- param.name if @param
- end
- end
-
class Param
attr_reader :name, :klass, :type, :options, :description
@@ -87,21 +76,25 @@ module Deltacloud::Validation
def validate(current_driver, 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")
+ raise validation_exception "Required parameter #{p.name} not found"
end
next unless values[p.name]
if p.hwp_property?
profile = current_driver.hardware_profile(credentials, values['hwp_id'])
- raise Failure.new(p, "Unknown hardware profile selected #{values['hwp_id']}") unless profile
+ raise validation_exception("Unknown hardware profile selected #{values['hwp_id']}") unless profile
unless p.valid_hwp_value?(profile, values[p.name])
- raise Failure.new(p, "Hardware profile property #{p.name} has invalid value #{values[p.name]}")
+ raise validation_exception("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(", ")}")
+ raise validation_exception("Parameter #{p.name} has value #{values[p.name]} which is not in #{p.options.join(", ")}")
end
end
end
end
+ def validation_exception(message)
+ Deltacloud::ExceptionHandler::ValidationFailure.new(StandardError.new(message))
+ end
+
end
--
1.7.9.1