You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by ma...@apache.org on 2013/01/28 17:57:10 UTC

git commit: Deltacloud: adds storage_snapshots for Openstack driver

Updated Branches:
  refs/heads/master 4e5b177b5 -> 00244c1de


Deltacloud: adds storage_snapshots for Openstack driver

requires latest openstack rubygem - >= 1.0.8


Project: http://git-wip-us.apache.org/repos/asf/deltacloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltacloud/commit/00244c1d
Tree: http://git-wip-us.apache.org/repos/asf/deltacloud/tree/00244c1d
Diff: http://git-wip-us.apache.org/repos/asf/deltacloud/diff/00244c1d

Branch: refs/heads/master
Commit: 00244c1de7ac78bc1d774136d91bdf96bf0e3c0d
Parents: 4e5b177
Author: marios <ma...@redhat.com>
Authored: Fri Jan 25 16:52:06 2013 +0200
Committer: marios <ma...@redhat.com>
Committed: Mon Jan 28 18:56:20 2013 +0200

----------------------------------------------------------------------
 server/deltacloud-core.gemspec                     |    2 +-
 .../deltacloud/collections/storage_snapshots.rb    |    4 ++-
 .../drivers/openstack/openstack_driver.rb          |   25 +++++++++++++++
 3 files changed, 29 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltacloud/blob/00244c1d/server/deltacloud-core.gemspec
----------------------------------------------------------------------
diff --git a/server/deltacloud-core.gemspec b/server/deltacloud-core.gemspec
index 70cd576..0555c21 100644
--- a/server/deltacloud-core.gemspec
+++ b/server/deltacloud-core.gemspec
@@ -111,7 +111,7 @@ Gem::Specification.new do |s|
   s.add_dependency('uuidtools', '>= 2.1.1')
 
   # Openstack Compute and Object-Storage
-  s.add_dependency('openstack', '>= 1.0.7')
+  s.add_dependency('openstack', '>= 1.0.8')
 
   # Aruba Cloud
   s.add_dependency('savon', '>= 1.0.0')

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/00244c1d/server/lib/deltacloud/collections/storage_snapshots.rb
----------------------------------------------------------------------
diff --git a/server/lib/deltacloud/collections/storage_snapshots.rb b/server/lib/deltacloud/collections/storage_snapshots.rb
index dca253a..c18bb41 100644
--- a/server/lib/deltacloud/collections/storage_snapshots.rb
+++ b/server/lib/deltacloud/collections/storage_snapshots.rb
@@ -26,7 +26,9 @@ module Deltacloud::Collections
       standard_show_operation
 
       operation :create, :with_capability => :create_storage_snapshot do
-        param :volume_id, :string,  :required
+        param :volume_id,   :string,  :required
+        param :name,        :string,  :optional
+        param :description, :string,  :optional
         control do
           @storage_snapshot = driver.create_storage_snapshot(credentials, params)
           status 201  # Created

http://git-wip-us.apache.org/repos/asf/deltacloud/blob/00244c1d/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
----------------------------------------------------------------------
diff --git a/server/lib/deltacloud/drivers/openstack/openstack_driver.rb b/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
index 6d0ae9c..b9be595 100644
--- a/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
+++ b/server/lib/deltacloud/drivers/openstack/openstack_driver.rb
@@ -435,19 +435,33 @@ module Deltacloud
 
         def storage_snapshots(credentials, opts={})
           vs = new_client(credentials, "volume")
+          snapshots = []
           safely do
+            if opts[:id]
+              snapshots <<  convert_snapshot(vs.get_snapshot(opts[:id]))
+            else
+              vs.snapshots.each do |snap|
+                snapshots << convert_snapshot(snap)
+              end
+            end
           end
+          snapshots
         end
 
         def create_storage_snapshot(credentials, opts={})
           vs = new_client(credentials, "volume")
           safely do
+            name = opts[:name] || "snapshot_#{Time.now.to_i}"
+            description = opts[:description] || "snapshot from volume #{opts[:volume_id]}"
+            params = {:volume_id => opts[:volume_id], :display_name=>name, :display_description=>description}
+            convert_snapshot(vs.create_snapshot(params))
           end
         end
 
         def destroy_storage_snapshot(credentials, opts={})
           vs = new_client(credentials, "volume")
           safely do
+            vs.delete_snapshot(opts[:id])
           end
         end
 
@@ -607,6 +621,17 @@ private
           })
         end
 
+        def convert_snapshot(snapshot)
+          StorageSnapshot.new(
+            :id => snapshot.id,
+            :name => snapshot.display_name,
+            :description => snapshot.display_description || snapshot.display_name,
+            :state => snapshot.status,
+            :storage_volume_id => snapshot.volume_id,
+            :created => snapshot.created_at
+          )
+        end
+
         #IN: path1='server_path1'. content1='contents1', path2='server_path2', content2='contents2' etc
         #OUT:{local_path=>server_path, local_path1=>server_path2 etc}
         def extract_personality(opts)