[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