On Fri, May 21, 2010 at 03:46:17PM +0100, [email protected] wrote: > From: martyntaylor <[email protected]> > > --- > src/app/models/instance_observer.rb | 2 +- > src/app/models/task_observer.rb | 2 +- > src/app/util/taskomatic.rb | 16 +++++++++++----- > src/config/environment.rb | 4 +++- > 4 files changed, 16 insertions(+), 8 deletions(-) > > diff --git a/src/app/models/instance_observer.rb > b/src/app/models/instance_observer.rb > index 283991d..fa5b3d2 100644 > --- a/src/app/models/instance_observer.rb > +++ b/src/app/models/instance_observer.rb > @@ -1,6 +1,6 @@ > class InstanceObserver < ActiveRecord::Observer > > - def after_save(an_instance) > + def before_save(an_instance) > if an_instance.changed? > change = an_instance.changes['state'] > if change > diff --git a/src/app/models/task_observer.rb b/src/app/models/task_observer.rb > index d1834c4..98252b0 100644 > --- a/src/app/models/task_observer.rb > +++ b/src/app/models/task_observer.rb > @@ -2,7 +2,7 @@ class TaskObserver < ActiveRecord::Observer > > END_STATES = [ Task::STATE_CANCELED, Task::STATE_FAILED, > Task::STATE_FINISHED ] > > - def after_save(a_task) > + def before_save(a_task) > if a_task.changed? > change = a_task.changes['state'] > if change > diff --git a/src/app/util/taskomatic.rb b/src/app/util/taskomatic.rb > index e66bb62..22328dc 100644 > --- a/src/app/util/taskomatic.rb > +++ b/src/app/util/taskomatic.rb > @@ -45,8 +45,6 @@ class Taskomatic > > def instance_create > > - @task.time_started = Time.now > - > begin > client = @task.instance.cloud_account.connect > realm = @task.instance.realm.external_key rescue nil > @@ -55,9 +53,13 @@ class Taskomatic > unless @task.instance.image.provider_image? > @task.instance.image = @task.instance.image.provider_images[0] > end > + > unless @task.instance.hardware_profile.provider_hardware_profile? > @task.instance.hardware_profile = > @task.instance.hardware_profile.provider_hardware_profiles[0] > end > + > + @task.state = Task::STATE_PENDING > + @task.save! > dcloud_instance = > client.create_instance(@task.instance.image.external_key, > :flavor => > @task.instance.hardware_profile.external_key, > :realm => realm, > @@ -65,6 +67,11 @@ class Taskomatic > if dcloud_instance.class == Net::HTTPInternalServerError > @task.instance.state = Instance::STATE_CREATE_FAILED > raise "Error creating dcloud instance, returned internal server > error." > + @task.state = TASK::STATE_FAILED > + @task.failure_code = Task::FAILURE_PROVIDER_CONTACT_FAILED > + else > + @task.state = Task::STATE_RUNNING > + @task.save! > end > > @logger.info "Task instance create completed with key > #{dcloud_instance.id} and state #{dcloud_instance.state}" > @@ -77,7 +84,7 @@ class Taskomatic > else > @task.state = Task::STATE_FINISHED > end > - @task.time_ended = Time.now > + > @task.save! > end > > @@ -153,5 +160,4 @@ class Taskomatic > end > end > end > -end > - > +end > \ No newline at end of file > diff --git a/src/config/environment.rb b/src/config/environment.rb > index 141642b..1721126 100644 > --- a/src/config/environment.rb > +++ b/src/config/environment.rb > @@ -40,13 +40,14 @@ Rails::Initializer.run do |config| > # config.gem "bj" > # config.gem "hpricot", :version => '0.6', :source => > "http://code.whytheluckystiff.net" > # config.gem "aws-s3", :lib => "aws/s3" > - config.gem "gettext", :lib => "gettext_rails" > + config.gem "gettext", :lib => "gettext_rails" > config.gem "gettext", :lib => "gettext_activerecord" > config.gem "authlogic" > config.gem "deltacloud-client", :lib => "deltacloud" > config.gem "haml" > config.gem "will_paginate" > > + config.active_record.observers = :instance_observer, :task_observer > # Only load the plugins named here, in the order given. By default, all > plugins > # in vendor/plugins are loaded in alphabetical order. > # :all can be used as a placeholder for all plugins not explicitly named > @@ -75,4 +76,5 @@ Rails::Initializer.run do |config| > # The default locale is :en and all translations from > config/locales/*.rb,yml are auto loaded. > # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', > '*.{rb,yml}')] > # config.i18n.default_locale = :de > + > end > -- > 1.6.6.1 > > _______________________________________________ > deltacloud-devel mailing list > [email protected] > https://fedorahosted.org/mailman/listinfo/deltacloud-devel
ACK on series 1-7, with replacement 7/7 as sent, once it's all rebased to apply to 'next' :) Thanks! Steve _______________________________________________ deltacloud-devel mailing list [email protected] https://fedorahosted.org/mailman/listinfo/deltacloud-devel
