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

Richard Su rwsu at redhat.com
Fri Dec 2 21:18:32 UTC 2011


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




More information about the aeolus-devel mailing list