From: Martyn Taylor <mtaylor(a)redhat.com>
---
lib/aeolus_image/model/image.rb | 11 +++++++++++
lib/aeolus_image/model/image_build.rb | 11 +++++++++++
lib/aeolus_image/model/provider_image.rb | 5 +++++
lib/aeolus_image/model/target_image.rb | 11 +++++++++++
lib/aeolus_image/model/warehouse_model.rb | 13 +++++++++++++
5 files changed, 51 insertions(+), 0 deletions(-)
diff --git a/lib/aeolus_image/model/image.rb b/lib/aeolus_image/model/image.rb
index 46a3729..9d19978 100644
--- a/lib/aeolus_image/model/image.rb
+++ b/lib/aeolus_image/model/image.rb
@@ -61,6 +61,17 @@ module Aeolus
end
@description
end
+
+ # Delete this image and all child objects
+ def delete!
+ begin
+ image_builds.each do |build|
+ build.delete!
+ end
+ rescue NoMethodError
+ end
+ Image.delete(@uuid)
+ end
end
end
end
diff --git a/lib/aeolus_image/model/image_build.rb
b/lib/aeolus_image/model/image_build.rb
index fae38e1..8509ce4 100644
--- a/lib/aeolus_image/model/image_build.rb
+++ b/lib/aeolus_image/model/image_build.rb
@@ -38,6 +38,17 @@ module Aeolus
targets.include?(pi.target_image)
end
end
+
+ # Deletes this image and all child objects
+ def delete!
+ begin
+ target_images.each do |ti|
+ ti.delete!
+ end
+ rescue NoMethodError
+ end
+ ImageBuild.delete(@uuid)
+ end
end
end
end
diff --git a/lib/aeolus_image/model/provider_image.rb
b/lib/aeolus_image/model/provider_image.rb
index 2faade6..de98907 100644
--- a/lib/aeolus_image/model/provider_image.rb
+++ b/lib/aeolus_image/model/provider_image.rb
@@ -22,6 +22,11 @@ module Aeolus
def provider_name
@provider
end
+
+ # Deletes this provider image
+ def delete!
+ ProviderImage.delete(@uuid)
+ end
end
end
end
diff --git a/lib/aeolus_image/model/target_image.rb
b/lib/aeolus_image/model/target_image.rb
index ed56e5c..3bb8fb5 100644
--- a/lib/aeolus_image/model/target_image.rb
+++ b/lib/aeolus_image/model/target_image.rb
@@ -26,6 +26,17 @@ module Aeolus
def target_template
Template.find(@template) if @template
end
+
+ # Deletes this targetimage and all child objects
+ def delete!
+ begin
+ provider_images.each do |pi|
+ pi.delete!
+ end
+ rescue NoMethodError
+ end
+ TargetImage.delete(@uuid)
+ end
end
end
end
diff --git a/lib/aeolus_image/model/warehouse_model.rb
b/lib/aeolus_image/model/warehouse_model.rb
index a3e5324..b855eab 100644
--- a/lib/aeolus_image/model/warehouse_model.rb
+++ b/lib/aeolus_image/model/warehouse_model.rb
@@ -75,6 +75,19 @@ module Aeolus
self.warehouse.query(@bucket_name, query_string)
end
+ def delete(uuid)
+ self.set_warehouse_and_bucket if self.bucket.nil?
+ begin
+ if self.bucket.include?(uuid)
+ self.bucket.object(uuid).delete!
+ else
+ false
+ end
+ rescue RestClient::ResourceNotFound
+ false
+ end
+ end
+
protected
# Copy over entirely too much code to load the config file
def load_config
--
1.7.6