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":}
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
aeolus-devel@lists.fedorahosted.org