On 08/05/2011 11:44 AM, mtaylor(a)redhat.com wrote:
From: Martyn Taylor<mtaylor(a)redhat.com>
---
lib/config_parser.rb | 1 +
lib/delete_command.rb | 55 ++++++++++++++++++++++++++++++++++++++----------
2 files changed, 44 insertions(+), 12 deletions(-)
diff --git a/lib/config_parser.rb b/lib/config_parser.rb
index e8a32ed..fdbebf3 100644
--- a/lib/config_parser.rb
+++ b/lib/config_parser.rb
@@ -116,6 +116,7 @@ module Aeolus
opts.separator ""
opts.separator "Delete options:"
opts.on('-m', '--targetimage ID', 'delete target image
and its provider images') do |id|
+ @options[:subcommand] = :target_image
@options[:targetimage] = id
end
opts.on('-D', '--providerimage ID', 'delete provider
image') do |id|
diff --git a/lib/delete_command.rb b/lib/delete_command.rb
index 3eb121b..2c0f7a9 100644
--- a/lib/delete_command.rb
+++ b/lib/delete_command.rb
@@ -6,30 +6,61 @@ module Aeolus
end
def provider_image
- delete_provider_image(@options[:providerimage])
- end
-
- private
- def delete_provider_image(provider_image)
- if !(is_uuid?(provider_image))
- puts "Error: '" + provider_image + "' is not a valid
Provider Image ID"
+ check_id(@options[:providerimage], "Provider Image")
+ begin
+ delete_provider_image(@options[:providerimage])
+ puts "Provider Image: '" + provider_image + "' was
succesfully deleted"
+ exit(0)
+ rescue RestClient::ResourceNotFound
+ puts "Error: Could not find Target Image with ID: '" +
provider_image + "'"
+ exit(1)
+ rescue => e
+ puts "Error: Could not delete Target Image with ID: '" +
provider_image + "'"
+ puts e.inspect
exit(1)
end
+ end
+ def target_image
+ check_id(@options[:targetimage], "Target Image")
begin
- iwhd['/provider_images/' + provider_image].delete
- puts "Provider Image: '" + provider_image + "' was
succesfully deleted"
+ delete_target_image(@options[:targetimage])
+ puts "Target Image: '" + @options[:targetimage] + "'
was succesfully deleted"
exit(0)
rescue RestClient::ResourceNotFound
- puts "Error: Could not find Provider Image with ID: '" +
provider_image + "'"
+ puts "Error: Could not find Target Image with ID: '" +
@options[:targetimage] + "'"
exit(1)
rescue => e
- puts "Error: Could not delete Provider Image with ID: '" +
provider_image + "'"
+ puts "Error: Could not delete Target Image with ID: '" +
@options[:targetimage] + "'"
puts e.inspect
exit(1)
end
end
- end
s/provider_image/options[:providerimage]/
+ private
+ def delete_provider_image(provider_image)
+ iwhd['/provider_images/' + provider_image].delete
+ end
+
+ def delete_target_image(target_image)
+ # Delete Provider Images
+ list_command = ListCommand.new
+ list_command.list_providerimages(target_image).each do |provider_image|
+ begin
+ delete_provider_image(provider_image)
+ rescue
+ end
+ end
+ # Delete Target Image
+ iwhd['/target_images/' + target_image].delete
+ end
+
+ def check_id(uuid, type)
+ if !(is_uuid?(uuid))
+ puts "Error: '" + uuid + "' is not a valid " +
type + " ID"
+ exit(1)
+ end
+ end
+ end
end
end
Conditional ACK