From: Jan Provaznik <jprovazn(a)redhat.com>
Icicle represnts output from image build (or image push) in xml format.
---
src/app/models/icicle.rb | 18 ++++++++++++++++++
src/app/models/provider_image.rb | 20 +++++++++++++++++++-
src/db/migrate/20110222153957_create_icicles.rb | 14 ++++++++++++++
src/spec/factories/icicle.rb | 3 +++
src/spec/factories/provider_image.rb | 1 +
src/spec/models/icicle_spec.rb | 17 +++++++++++++++++
6 files changed, 72 insertions(+), 1 deletions(-)
create mode 100644 src/app/models/icicle.rb
create mode 100644 src/db/migrate/20110222153957_create_icicles.rb
create mode 100644 src/spec/factories/icicle.rb
create mode 100644 src/spec/models/icicle_spec.rb
diff --git a/src/app/models/icicle.rb b/src/app/models/icicle.rb
new file mode 100644
index 0000000..2bad5d9
--- /dev/null
+++ b/src/app/models/icicle.rb
@@ -0,0 +1,18 @@
+# == Schema Information
+# Schema version: 20110223132404
+#
+# Table name: icicles
+#
+# id :integer not null, primary key
+# uuid :string(255)
+# xml :text
+# provider_image_id :integer
+# created_at :datetime
+# updated_at :datetime
+#
+
+class Icicle < ActiveRecord::Base
+ validates_presence_of :uuid
+ validates_uniqueness_of :uuid
+ belongs_to :provider_image
+end
diff --git a/src/app/models/provider_image.rb b/src/app/models/provider_image.rb
index 0ac23c2..ee45869 100644
--- a/src/app/models/provider_image.rb
+++ b/src/app/models/provider_image.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 20110221125633
+# Schema version: 20110223132404
#
# Table name: provider_images
#
@@ -15,8 +15,26 @@
class ProviderImage < ActiveRecord::Base
belongs_to :provider
belongs_to :image
+ has_one :icicle, :dependent => :destroy
validates_presence_of :provider_id
validates_presence_of :image_id
validates_uniqueness_of :uuid, :allow_nil => true
+
+ def push
+ # TODO: this is just stubbed upload call,
+ # when new image_builder_service is done, replace
+ # with real request to image_builder_service
+ end
+
+ def after_update
+ if self.uploaded_changed? and self.uploaded == true
+ begin
+ invoke_sync
+ rescue => e
+ logger.error e.message
+ logger.error e.backtrace.join("\n ")
+ end
+ end
+ end
end
diff --git a/src/db/migrate/20110222153957_create_icicles.rb
b/src/db/migrate/20110222153957_create_icicles.rb
new file mode 100644
index 0000000..ccaf592
--- /dev/null
+++ b/src/db/migrate/20110222153957_create_icicles.rb
@@ -0,0 +1,14 @@
+class CreateIcicles < ActiveRecord::Migration
+ def self.up
+ create_table :icicles do |t|
+ t.string :uuid
+ t.text :xml
+ t.integer :provider_image_id
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table :icicles
+ end
+end
diff --git a/src/spec/factories/icicle.rb b/src/spec/factories/icicle.rb
new file mode 100644
index 0000000..3961561
--- /dev/null
+++ b/src/spec/factories/icicle.rb
@@ -0,0 +1,3 @@
+Factory.define :icicle do |i|
+ i.sequence(:uuid) { |n| "icicle#{n}" }
+end
diff --git a/src/spec/factories/provider_image.rb b/src/spec/factories/provider_image.rb
index 55c2281..2dbe453 100644
--- a/src/spec/factories/provider_image.rb
+++ b/src/spec/factories/provider_image.rb
@@ -4,6 +4,7 @@ Factory.define :provider_image do |ri|
ri.sequence(:provider_image_key) { |n| "provider_image_key#(n)" }
ri.uploaded true
ri.registered true
+ ri.association :icicle
end
Factory.define :mock_provider_image, :parent => :provider_image do |i|
diff --git a/src/spec/models/icicle_spec.rb b/src/spec/models/icicle_spec.rb
new file mode 100644
index 0000000..d4a1e86
--- /dev/null
+++ b/src/spec/models/icicle_spec.rb
@@ -0,0 +1,17 @@
+require 'spec_helper'
+
+describe Icicle do
+ it "should not be valid if uuid is not set" do
+ i = Factory.build(:icicle, :uuid => nil)
+ i.valid?.should be_false
+ i.uuid = ''
+ i.valid?.should be_false
+ end
+
+ it "should have a unique uuid" do
+ old = Factory(:icicle)
+ old.should be_valid
+ new = Factory.build(:icicle, :uuid => old.uuid)
+ new.should_not be_valid
+ end
+end
--
1.7.4