You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2011/11/18 11:21:44 UTC

[PATCH core] RHEV-M: Added method to check if given RHEV-M setup has capability to inject user_data into instance

From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 .../lib/deltacloud/drivers/rhevm/rhevm_client.rb   |   27 ++++++-------------
 1 files changed, 9 insertions(+), 18 deletions(-)

diff --git a/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb b/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb
index 49f6509..ddb8e78 100644
--- a/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb
+++ b/server/lib/deltacloud/drivers/rhevm/rhevm_client.rb
@@ -92,24 +92,15 @@ module RHEVM
       return true
     end
 
-    def api_version?(major)
-      headers = {
-        :content_type => 'application/xml',
-        :accept => 'application/xml'
-      }
+    def has_capability?(name)
+      headers = {}
       headers.merge!(auth_header)
-      result_xml = Nokogiri::XML(RHEVM::client(@api_entrypoint)["/"].get(headers))
-      (result_xml/'/api/system_version').first[:major].strip == major
-    end
-
-    def cluster_version?(cluster_id, major)
-      headers = {
+      headers.merge!({
         :content_type => 'application/xml',
-        :accept => 'application/xml'
-      }
-      headers.merge!(auth_header)
-      result_xml = Nokogiri::XML(RHEVM::client(@api_entrypoint)["/clusters/%s" % cluster_id].get(headers))
-      (result_xml/'/cluster/version').first[:major].strip == major
+        :accept => 'application/xml',
+      })
+      capabilities_xml = Nokogiri::XML(RHEVM::client(@api_entrypoint)['/capabilities'].get(headers))
+      ! (capabilities_xml/"/capabilities/version/custom_properties/custom_property[@name='#{name}']").empty?
     end
 
     def create_vm(template_id, opts={})
@@ -124,8 +115,8 @@ module RHEVM
           cpu {
             topology( :cores => (opts[:hwp_cpu] || '1'), :sockets => '1' )
           }
-          if opts[:user_data] and not opts[:user_data].empty?
-            if api_version?('3') and cluster_version?((opts[:realm_id] || clusters.first.id), '3')
+          if (opts[:user_data] and not opts[:user_data].empty?)
+            if has_capability?('floppyinject')
               custom_properties {
                 #
                 # FIXME: 'regexp' parameter is just a temporary workaround. This
-- 
1.7.4.4