[PATCH 1/6] bz#747719: validation of import parameters
Hugh Brock
hbrock at redhat.com
Thu Dec 22 17:48:15 UTC 2011
On Thu, Dec 22, 2011 at 06:42:53PM +0100, mzatko at redhat.com wrote:
> From: Maros Zatko <mzatko at redhat.com>
>
> ---
> lib/aeolus_cli/command/import_command.rb | 50 +++++++++++++++++++++++++++---
> 1 files changed, 45 insertions(+), 5 deletions(-)
>
> diff --git a/lib/aeolus_cli/command/import_command.rb b/lib/aeolus_cli/command/import_command.rb
> index 591a999..91a5d54 100644
> --- a/lib/aeolus_cli/command/import_command.rb
> +++ b/lib/aeolus_cli/command/import_command.rb
> @@ -18,11 +18,7 @@ module Aeolus
> def initialize(opts={}, logger=nil)
> super(opts, logger)
> default = {
> - :image => '',
> - :build => '', # TODO - Is this used anywhere?
> - :id => '',
> :description => '<image><name>' + @options[:id] + '</name></image>',
> - :provider_account => ''
> }
> @options = default.merge(@options)
> end
> @@ -33,7 +29,9 @@ module Aeolus
> if !description.nil?
> @options[:description] = description
> end
> - # TODO: Validate Description XML
> +
> + import_params_valid!(@options)
> +
> image = Aeolus::CLI::Image.new({:target_identifier => @options[:id],
> :image_descriptor => @options[:description],
> :provider_account_name => @options[:provider_account].first})
> @@ -49,6 +47,48 @@ module Aeolus
> handle_exception(e)
> end
> end
> +
> + private
> +
> + def import_params_valid!(params)
> + if not params.is_a? Hash
> + raise TypeError, "params should be Hash instead of #{params.class}"
> + end
> +
> + if not params.values.all?
> + raise ArgumentError, "params should not contain nil"
> + end
> +
> + required_keys = [:id, :target, :description, :provider]
> +
> + isect = params.keys & required_keys
> + diff = params.keys - required_keys
> +
> + missing = required_keys - isect
> +
> + if not missing == []
> + raise ArgumentError, "missing #{missing*', '}"
> + end
> +
> + if not diff == []
> + raise ArgumentError, "unexpected #{diff*', '}"
> + end
> +
> + validate_description_xml!(params[:description])
> + end
> +
> + def validate_description_xml!(xml)
> + errors = validate_xml_document(File.dirname(__FILE__) + "/../../../examples/image_desc.rng", xml)
> + if errors.length > 0
> + puts "ERROR: The given image descrition does not conform to the xml schema, see below for specific details:"
ITYM "description" ^^^^^^^^^^
> + errors.each do |error|
> + puts "- " + error.message
> + end
> + raise ArgumentError, "Invalid description"
> + end
> + true
> + end
> +
> end
> end
> end
> --
> 1.7.7.4
>
(Just happened to see that...)
--H
--
== Hugh Brock, hbrock at redhat.com ==
== Engineering Manager, Cloud BU ==
== Aeolus Project: Manage virtual infrastructure across clouds. ==
== http://aeolusproject.org ==
"I know that you believe you understand what you think I said, but I’m
not sure you realize that what you heard is not what I meant."
--Robert McCloskey
More information about the aeolus-devel
mailing list