[PATCH configure] BZ 758473 - aeolus-configure should check RHEVM export directory has correct type

Mo Morsi mmorsi at redhat.com
Mon Dec 5 16:46:44 UTC 2011


On 12/02/2011 04:18 PM, Richard Su wrote:
> Before mounting the export directory, check its type via the RHEVM REST API.
> The type needs to be "export" and not "data" or "iso". Otherwise pushes will fail.
> ---
>   .../aeolus/lib/puppet/provider/web_request/curl.rb |   12 +++++++++++-
>   recipes/aeolus/lib/puppet/type/web_request.rb      |    8 ++++++++
>   recipes/aeolus/manifests/profiles/rhevm.pp         |   10 +++++++++-
>   3 files changed, 28 insertions(+), 2 deletions(-)
>
> diff --git a/recipes/aeolus/lib/puppet/provider/web_request/curl.rb b/recipes/aeolus/lib/puppet/provider/web_request/curl.rb
> index e046121..a857b36 100644
> --- a/recipes/aeolus/lib/puppet/provider/web_request/curl.rb
> +++ b/recipes/aeolus/lib/puppet/provider/web_request/curl.rb
> @@ -58,6 +58,14 @@ class Curl::Easy
>         curl.cookiejar  = params[:cookie]
>       end
>
> +    if params.has_key?(:username)&&  !params[:username].nil?
> +      curl.username = params[:username]
> +    end
> +
> +    if params.has_key?(:password)&&  !params[:password].nil?
> +      curl.password = params[:password]
> +    end
> +
>       curl.follow_location = (params.has_key?(:follow)&&  params[:follow])
>       request_params = params[:parameters]
>       file_params    = params[:file_parameters]
> @@ -158,7 +166,9 @@ Puppet::Type.type(:web_request).provide :curl do
>                                          :parameters =>  params[:parameters],
>                                          :file_parameters =>  params[:file_parameters],
>                                          :cookie =>  cookies,
> -                                       :follow =>  params[:follow])
> +                                       :follow =>  params[:follow],
> +                                       :username =>  params[:username],
> +                                       :password =>  params[:password])
>         verify_result(result,
>                       :returns          =>  params[:returns],
>                       :does_not_return  =>  params[:does_not_return],
> diff --git a/recipes/aeolus/lib/puppet/type/web_request.rb b/recipes/aeolus/lib/puppet/type/web_request.rb
> index f893ca3..d20229e 100644
> --- a/recipes/aeolus/lib/puppet/type/web_request.rb
> +++ b/recipes/aeolus/lib/puppet/type/web_request.rb
> @@ -134,4 +134,12 @@ Puppet::Type.newtype(:web_request) do
>         desc "Invoke request unless the specified request returns true"
>       end
>
> +    newparam(:username) do
> +      desc "HTTP authentication username"
> +    end
> +
> +    newparam(:password) do
> +      desc "HTTP authentication password"
> +    end
> +
>   end
> diff --git a/recipes/aeolus/manifests/profiles/rhevm.pp b/recipes/aeolus/manifests/profiles/rhevm.pp
> index 39680f2..f863ba2 100644
> --- a/recipes/aeolus/manifests/profiles/rhevm.pp
> +++ b/recipes/aeolus/manifests/profiles/rhevm.pp
> @@ -18,6 +18,14 @@ class aeolus::profiles::rhevm {
>       mode =>  755,
>       require =>  Package['aeolus-conductor-daemons'] }
>
> +  web_request{ "rhevm-check-export-path-is-export-type":
> +    get         =>   "$rhevm_deltacloud_provider/storagedomains?search=export",
> +    username =>  "$rhevm_deltacloud_username",
> +    password =>  "$rhevm_deltacloud_password",
> +    returns     =>  '200',
> +    contains    =>  "//storage_domains/storage_domain/storage/path[text() = '$rhevm_nfs_export']"
> +  }
> +
>     file {"$rhevm_nfs_mount_point":
>       ensure =>  'directory'}
>
> @@ -26,7 +34,7 @@ class aeolus::profiles::rhevm {
>       device =>  "$rhevm_nfs_server:$rhevm_nfs_export",
>       fstype =>  "nfs",
>       options =>  "rw",
> -    require =>  File["$rhevm_nfs_mount_point"]}
> +    require =>  [File["$rhevm_nfs_mount_point"], Web_Request["rhevm-check-export-path-is-export-type"]]}
>
>     aeolus::create_bucket{"aeolus":}
>

ACK. Looks good. As discussed, verified that the request works as 
intended (and then did not work when rhevm_nfs_export was set to an 
invalid value).

Great addition.

   -Mo



More information about the aeolus-devel mailing list