ACK To both
On 03/15/2011 04:06 PM, Steve Linabery wrote:
From: Scott Seago<sseago(a)redhat.com>
Signed-off-by: Scott Seago<sseago(a)redhat.com>
---
.../controllers/resources/instances_controller.rb | 2 +-
src/app/models/image.rb | 3 +-
src/app/models/provider_image.rb | 15 +++++++--
src/app/views/image_factory/templates/_builds.haml | 3 +-
.../20110302120000_add_status_to_provider_image.rb | 31 ++++++++++++++++++++
src/features/template.feature | 2 +-
src/image_builder_service/image_builder_service | 3 +-
src/spec/factories/provider_image.rb | 3 +-
8 files changed, 48 insertions(+), 14 deletions(-)
create mode 100644 src/db/migrate/20110302120000_add_status_to_provider_image.rb
diff --git a/src/app/controllers/resources/instances_controller.rb
b/src/app/controllers/resources/instances_controller.rb
index 30aeccd..6eba323 100644
--- a/src/app/controllers/resources/instances_controller.rb
+++ b/src/app/controllers/resources/instances_controller.rb
@@ -35,7 +35,7 @@ class Resources::InstancesController< ApplicationController
@templates = Template.paginate(
:page => params[:page] || 1,
:include => {:images => :provider_images},
- :conditions => "provider_images.uploaded = 't'"
+ :conditions => "provider_images.status =
'#{ProviderImage::STATE_COMPLETE}'"
)
end
diff --git a/src/app/models/image.rb b/src/app/models/image.rb
index fc33b53..2109fe6 100644
--- a/src/app/models/image.rb
+++ b/src/app/models/image.rb
@@ -170,8 +170,7 @@ class Image< ActiveRecord::Base
:image_id => image.id,
:provider_id => account.provider.id,
:provider_image_key => image_id,
- :uploaded => true,
- :registered => true
+ :status => 'complete'
)
rep.save!
diff --git a/src/app/models/provider_image.rb b/src/app/models/provider_image.rb
index e218970..ea2209b 100644
--- a/src/app/models/provider_image.rb
+++ b/src/app/models/provider_image.rb
@@ -1,5 +1,5 @@
# == Schema Information
-# Schema version: 20110223132404
+# Schema version: 20110302120000
#
# Table name: provider_images
#
@@ -7,9 +7,8 @@
# image_id :integer not null
# provider_id :integer not null
# provider_image_key :string(255)
-# uploaded :boolean
-# registered :boolean
# uuid :string(255)
+# status :string(255)
#
class ProviderImage< ActiveRecord::Base
@@ -24,6 +23,14 @@ class ProviderImage< ActiveRecord::Base
validates_uniqueness_of :uuid, :allow_nil => true
validates_uniqueness_of :image_id, :scope => :provider_id
+ STATE_QUEUED = 'queued'
+ STATE_COMPLETE = 'complete'
+ STATE_CANCELED = 'canceled'
+ STATE_FAILED = 'failed'
+
+ ACTIVE_STATES = [ STATE_QUEUED ]
+ INACTIVE_STATES = [STATE_COMPLETE, STATE_FAILED, STATE_CANCELED]
+
def push
# TODO: this is just stubbed upload call,
# when new image_builder_service is done, replace
@@ -31,7 +38,7 @@ class ProviderImage< ActiveRecord::Base
end
def after_update
- if self.uploaded_changed? and self.uploaded == true
+ if self.status_changed? and self.status == STATE_COMPLETE
begin
invoke_sync
rescue => e
diff --git a/src/app/views/image_factory/templates/_builds.haml
b/src/app/views/image_factory/templates/_builds.haml
index 6b5667a..79150c3 100644
--- a/src/app/views/image_factory/templates/_builds.haml
+++ b/src/app/views/image_factory/templates/_builds.haml
@@ -25,5 +25,4 @@ Builds for
%ul
- img.provider_images.each do |pimg|
%li
- / TODO: uploaded attr will go away, shoud be changed to status then
- = "#{pimg.provider.name}: #{pimg.uploaded ? 'uploaded' :
'not-uploaded'}"
+ = "#{pimg.provider.name}: #{pimg.status}"
diff --git a/src/db/migrate/20110302120000_add_status_to_provider_image.rb
b/src/db/migrate/20110302120000_add_status_to_provider_image.rb
new file mode 100644
index 0000000..7a54db1
--- /dev/null
+++ b/src/db/migrate/20110302120000_add_status_to_provider_image.rb
@@ -0,0 +1,31 @@
+class AddStatusToProviderImage< ActiveRecord::Migration
+ def self.up
+ add_column :provider_images, :status, :string
+ ProviderImage.all.each do |image|
+ if image.uploaded
+ image.status = "complete"
+ else
+ image.status = "queued"
+ end
+ image.save!
+ end
+ remove_column :provider_images, :uploaded
+ remove_column :provider_images, :registered
+ end
+
+ def self.down
+ add_column :provider_images, :uploaded, :boolean
+ add_column :provider_images, :registered, :boolean
+ ProviderImage.all.each do |image|
+ if image.status == "complete"
+ image.uploaded = true
+ image.registered = true
+ else
+ image.uploaded = false
+ image.registered = false
+ end
+ image.save!
+ end
+ remove_column :provider_images, :status
+ end
+end
diff --git a/src/features/template.feature b/src/features/template.feature
index 7dd4643..859542a 100644
--- a/src/features/template.feature
+++ b/src/features/template.feature
@@ -122,7 +122,7 @@ Feature: Manage Templates
And I am on the image factory templates page
When I choose this template
And I follow "Builds"
- Then I should see "amazon-ec2: uploaded"
+ Then I should see "amazon-ec2: complete"
Scenario: Build template
Given there is a "mock1" template
diff --git a/src/image_builder_service/image_builder_service
b/src/image_builder_service/image_builder_service
index 5167e10..19ea709 100755
--- a/src/image_builder_service/image_builder_service
+++ b/src/image_builder_service/image_builder_service
@@ -177,8 +177,7 @@ class ImageBuilderService
if new_status == 'complete'
ri = image.provider_images.first
ri.provider_image_key = obj[:build].finished_image
- ri.uploaded =true
- ri.registered=true
+ ri.status = ProviderImage::STATE_COMPLETE
ri.save!
# FIXME: Might be cleaner to do this in an active record observer instead.
diff --git a/src/spec/factories/provider_image.rb b/src/spec/factories/provider_image.rb
index 5de1a13..42053e8 100644
--- a/src/spec/factories/provider_image.rb
+++ b/src/spec/factories/provider_image.rb
@@ -2,8 +2,7 @@ Factory.define :provider_image do |ri|
ri.association :image
ri.association :provider
ri.sequence(:provider_image_key) { |n| "provider_image_key#(n)" }
- ri.uploaded true
- ri.registered true
+ ri.status "complete"
ri.association :icicle
end