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":}
--
1.7.6.4