You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by mf...@apache.org on 2011/07/27 14:16:42 UTC

svn commit: r1151441 - /incubator/deltacloud/trunk/server/lib/deltacloud/drivers/vsphere/vsphere_filemanager.rb

Author: mfojtik
Date: Wed Jul 27 12:16:42 2011
New Revision: 1151441

URL: http://svn.apache.org/viewvc?rev=1151441&view=rev
Log:
Add user_data! method and add the exception if datastore is not defined

Signed-off-by: Francesco Vollero <fv...@redhat.com>

Modified:
    incubator/deltacloud/trunk/server/lib/deltacloud/drivers/vsphere/vsphere_filemanager.rb

Modified: incubator/deltacloud/trunk/server/lib/deltacloud/drivers/vsphere/vsphere_filemanager.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/server/lib/deltacloud/drivers/vsphere/vsphere_filemanager.rb?rev=1151441&r1=1151440&r2=1151441&view=diff
==============================================================================
--- incubator/deltacloud/trunk/server/lib/deltacloud/drivers/vsphere/vsphere_filemanager.rb (original)
+++ incubator/deltacloud/trunk/server/lib/deltacloud/drivers/vsphere/vsphere_filemanager.rb Wed Jul 27 12:16:42 2011
@@ -5,6 +5,13 @@ module VSphere
 
 
   DIRECTORY_PATH="deltacloud"
+  MKISOFS_EXECUTABLE="mkisofs"
+  # This value is setted in this way because
+  # mkisofs man said, less than this amount
+  # he have to pad the content of the iso file
+  # that mean a limit of 400 kb file since
+  # 1 sector of iso file = 2048 bytes
+  ISO_SECTORS=200
 
   RbVmomi::VIM::Datastore::class_eval do
     def soap
@@ -19,6 +26,18 @@ module VSphere
       uploadFile(datastore, file, file_name)
     end
 
+    def user_data!(datastore,base64_content,file_name="deltacloud")
+      command="#{MKISOFS_EXECUTABLE} -stream-file-name #{file_name}.txt -stream-media-size #{ISO_SECTORS}"
+      iso_file=''
+      Open3::popen3(command) do |stdin, stdout, stderr|
+        stdin.write(base64_content.unpack("m"))
+        stdin.close()
+        iso_file=StringIO::new(stdout.read)
+      end
+      uploadFile(datastore,iso_file,[file_name,"iso"].join("."))
+    end
+
+
     def delete_iso!(datastore,file_name)
       deleteFile(datastore, file_name)
     end
@@ -109,6 +128,7 @@ module VSphere
     end
 
     def uploadFile(datastore,file,file_name)
+      raise "You need to set the realm_id" if datastore.nil?
       make_directory!(datastore,DIRECTORY_PATH) unless _exist?(datastore)
       @uri = buildUrl(datastore,file_name)
       http=Net::HTTP.new(@uri.host, @uri.port)