1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

feature #3782: Ruby OCA method for snapshot-delete, cli command.

Datastore driver action for snapshot delete
This commit is contained in:
Ruben S. Montero 2015-06-05 03:27:51 +02:00
parent 62a98c550d
commit 78c7bdbd5d
3 changed files with 31 additions and 3 deletions

View File

@ -301,6 +301,16 @@ cmd=CommandParser::CmdParser.new(ARGV) do
end
end
snapshot_delete_desc = <<-EOT.unindent
Deletes a snapshot from the image
EOT
command :"snapshot-delete", snapshot_delete_desc, :imageid, :snapshot_id do
helper.perform_action(args[0], options, "snapshot deleted") do |o|
o.snapshot_delete(args[1].to_i)
end
end
list_desc = <<-EOT.unindent
Lists Images in the pool
EOT

View File

@ -50,7 +50,8 @@ class DatastoreDriver < OpenNebulaDriver
:log => "LOG",
:stat => "STAT",
:clone => "CLONE",
:monitor => "MONITOR"
:monitor => "MONITOR",
:snap_delete => "SNAP_DELETE"
}
# Register default actions for the protocol
@ -65,7 +66,8 @@ class DatastoreDriver < OpenNebulaDriver
ACTION[:rm] => nil,
ACTION[:mkfs] => nil,
ACTION[:clone] => nil,
ACTION[:monitor] => nil
ACTION[:monitor] => nil,
ACTION[:snap_delete] => nil
}
}.merge!(options)
@ -87,6 +89,7 @@ class DatastoreDriver < OpenNebulaDriver
register_action(ACTION[:stat].to_sym, method("stat"))
register_action(ACTION[:clone].to_sym, method("clone"))
register_action(ACTION[:monitor].to_sym, method("monitor"))
register_action(ACTION[:snap_delete].to_sym, method("snap_delete"))
end
############################################################################
@ -123,6 +126,11 @@ class DatastoreDriver < OpenNebulaDriver
do_image_action(id, ds, :monitor, "#{drv_message} #{id}", true)
end
def snap_delete(id, drv_message)
ds = get_ds_type(drv_message)
do_image_action(id, ds, :snap_delete, "#{drv_message} #{id}")
end
private
def is_available?(ds, id, action)

View File

@ -36,7 +36,8 @@ module OpenNebula
:chmod => "image.chmod",
:chtype => "image.chtype",
:clone => "image.clone",
:rename => "image.rename"
:rename => "image.rename",
:snapshotdelete => "image.snapshotdelete"
}
IMAGE_STATES=%w{INIT READY USED DISABLED LOCKED ERROR CLONE DELETE USED_PERS}
@ -224,6 +225,15 @@ module OpenNebula
return call(IMAGE_METHODS[:rename], @pe_id, name)
end
# Deletes Image from snapshot
#
# @param snap_id [Integet] ID of the snapshot to delete
#
# @return [nil, OpenNebula::Error] nil in case of success or Error
def snapshot_delete(snap_id)
return call(IMAGE_METHODS[:snapshotdelete], @pe_id, snap_id)
end
#######################################################################
# Helpers to get Image information
#######################################################################