On 11/24/2011 04:08 PM, mtaylor(a)redhat.com wrote:
From: Martyn Taylor<mtaylor(a)redhat.com>
---
lib/aeolus_image/model/warehouse/image.rb | 2 +-
lib/aeolus_image/model/warehouse/image_build.rb | 18 +-----------
lib/aeolus_image/model/warehouse/target_image.rb | 2 +-
.../model/warehouse/warehouse_model.rb | 10 ++++--
spec/models/warehouse/image_build_spec.rb | 30 +-------------------
spec/models/warehouse/image_spec.rb | 13 --------
spec/models/warehouse/target_image_spec.rb | 8 +----
7 files changed, 12 insertions(+), 71 deletions(-)
diff --git a/lib/aeolus_image/model/warehouse/image.rb
b/lib/aeolus_image/model/warehouse/image.rb
index 42deea5..8f505d4 100644
--- a/lib/aeolus_image/model/warehouse/image.rb
+++ b/lib/aeolus_image/model/warehouse/image.rb
@@ -46,7 +46,7 @@ module Aeolus
end
def image_builds
- ImageBuild.find_all_by_image_uuid(@uuid)
+ ImageBuild.where("($image == \"" + @uuid.to_s +
"\")")
end
#TODO: We should get the image fields from the object body once we have it
defined.
diff --git a/lib/aeolus_image/model/warehouse/image_build.rb
b/lib/aeolus_image/model/warehouse/image_build.rb
index e47c2d7..2e94d08 100644
--- a/lib/aeolus_image/model/warehouse/image_build.rb
+++ b/lib/aeolus_image/model/warehouse/image_build.rb
@@ -18,28 +18,12 @@ module Aeolus
class ImageBuild< WarehouseModel
@bucket_name = 'builds'
- def self.find_all_by_image_uuid(uuid)
- self.set_warehouse_and_bucket if self.bucket.nil?
- self.bucket.objects.map do |wh_object|
- if wh_object.attr('image') == uuid
- ImageBuild.new(wh_object)
- end
- end.compact
- end
-
def image
Image.find(@image) if @image
end
def target_images
- TargetImage.all.select {|ti| ti.build and (ti.build.uuid == self.uuid)}
- end
-
- def provider_images
- targets = target_images
- ProviderImage.all.select do |pi|
- targets.include?(pi.target_image)
- end
+ TargetImage.where("($build == \"" + @uuid.to_s +
"\")")
end
# Deletes this image and all child objects
diff --git a/lib/aeolus_image/model/warehouse/target_image.rb
b/lib/aeolus_image/model/warehouse/target_image.rb
index 089edc0..234a004 100644
--- a/lib/aeolus_image/model/warehouse/target_image.rb
+++ b/lib/aeolus_image/model/warehouse/target_image.rb
@@ -23,7 +23,7 @@ module Aeolus
end
def provider_images
- ProviderImage.all.select{|pi| pi.target_image and (pi.target_image.uuid ==
self.uuid)}
+ ProviderImage.where("($target_image == \"" + @uuid.to_s +
"\")")
end
def target_template
diff --git a/lib/aeolus_image/model/warehouse/warehouse_model.rb
b/lib/aeolus_image/model/warehouse/warehouse_model.rb
index 14e9323..6ec02fa 100644
--- a/lib/aeolus_image/model/warehouse/warehouse_model.rb
+++ b/lib/aeolus_image/model/warehouse/warehouse_model.rb
@@ -105,9 +105,13 @@ module Aeolus
end
def where(query_string)
- self.set_warehouse_and_bucket if self.bucket.nil?
- self.warehouse.query(@bucket_name,
query_string).xpath('/objects/object').map do |obj|
- self.new(self.bucket.object(obj.at_xpath('./key/text()').to_s))
+ begin
+ self.set_warehouse_and_bucket if self.bucket.nil?
+ self.warehouse.query(@bucket_name,
query_string).xpath('/objects/object').map do |obj|
+ self.new(self.bucket.object(obj.at_xpath('./key/text()').to_s))
+ end
+ rescue RestClient::ResourceNotFound
+ []
end
end
diff --git a/spec/models/warehouse/image_build_spec.rb
b/spec/models/warehouse/image_build_spec.rb
index a49e0b7..15ae1cc 100644
--- a/spec/models/warehouse/image_build_spec.rb
+++ b/spec/models/warehouse/image_build_spec.rb
@@ -32,7 +32,6 @@ module Aeolus
end
@image_build = ImageBuild.new(@object)
-
@target_image_mock_with_no_build = mock(TargetImage, :build => nil)
@target_image_mock_with_correct_build = mock(TargetImage, :build =>
@image_build)
@other_target_image_mock_with_correct_build = mock(TargetImage, :build =>
@image_build)
@@ -142,7 +141,7 @@ module Aeolus
context "#target_images" do
before(:each) do
- TargetImage.stub(:all).and_return(@all_target_images)
+ TargetImage.stub(:where).and_return(@all_target_images)
end
context "should return collection" do
@@ -152,33 +151,6 @@ module Aeolus
it "with other correct target image" do
@image_build.target_images.should
include(@other_target_image_mock_with_correct_build)
end
- it "without target image with other build" do
- @image_build.target_images.should_not
include(@target_image_mock_with_other_image_build)
- end
- it "without target image without build" do
- @image_build.target_images.should_not
include(@target_image_mock_with_no_build)
- end
- end
- end
-
-
- context "#provider_images" do
- before(:each) do
- @image_build.stub(:target_images).and_return(@correct_target_images)
- ProviderImage.stub(:all).and_return(@all_provider_images)
- end
-
- context "should return collection" do
- it "with correct provider images" do
- @correct_provider_images.each do |provider_image|
- @image_build.provider_images.should include(provider_image)
- end
- end
- it "without provider image with other target image" do
- @incorrect_provider_images.each do |provider_image|
- @image_build.provider_images.should_not include(provider_image)
- end
- end
end
end
diff --git a/spec/models/warehouse/image_spec.rb b/spec/models/warehouse/image_spec.rb
index fd391e7..bd17165 100644
--- a/spec/models/warehouse/image_spec.rb
+++ b/spec/models/warehouse/image_spec.rb
@@ -202,19 +202,6 @@ module Aeolus
end
end
- context "#image_builds" do
-
- before(:each) do
- ImageBuild.stub(:find_all_by_image_uuid)
- end
-
- it "should call ImageBuild.find_all_by_image_uuid with @uuid" do
-
ImageBuild.should_receive(:find_all_by_image_uuid).with(@image.instance_variable_get(:@uuid))
- @image.image_builds
- end
-
- end
-
context "#delete!" do
before(:each) do
diff --git a/spec/models/warehouse/target_image_spec.rb
b/spec/models/warehouse/target_image_spec.rb
index e34cdc9..41e86d5 100644
--- a/spec/models/warehouse/target_image_spec.rb
+++ b/spec/models/warehouse/target_image_spec.rb
@@ -117,7 +117,7 @@ module Aeolus
context "#provider_images" do
before(:each) do
- ProviderImage.stub(:all).and_return(@all_provider_images)
+ ProviderImage.stub(:where).and_return(@all_provider_images)
end
context "should return collection" do
@@ -127,12 +127,6 @@ module Aeolus
it "with other correct provider image" do
@target_image.provider_images.should
include(@other_provider_image_mock_with_correct_target_image)
end
- it "without provider image with other target image" do
- @target_image.provider_images.should_not
include(@provider_image_mock_with_other_target_image)
- end
- it "without provider image without target image" do
- @target_image.provider_images.should_not
include(@provider_image_mock_with_no_target_image)
- end
end
end
ACK to the patchset