From: Imre Farkas <ifarkas(a)redhat.com>
---
src/app/models/provider_account.rb | 17 +++++++++++++++++
src/app/util/taskomatic.rb | 9 +++++++++
2 files changed, 26 insertions(+)
diff --git a/src/app/models/provider_account.rb b/src/app/models/provider_account.rb
index 136d365..0da9184 100644
--- a/src/app/models/provider_account.rb
+++ b/src/app/models/provider_account.rb
@@ -60,6 +60,9 @@ class ProviderAccount < ActiveRecord::Base
has_many :provider_priority_group_elements, :as => :value, :dependent =>
:destroy
+ has_many :events, :as => :source, :dependent => :destroy,
+ :order => 'events.id ASC'
+
# Helpers
attr_accessor :x509_cert_priv_file, :x509_cert_pub_file
@@ -416,6 +419,20 @@ class ProviderAccount < ActiveRecord::Base
:pushed
end
+ def failure_count(options = {})
+ relation = self.events.where(:status_code => 'provider_account_failure')
+
+ if options[:from].present?
+ relation = relation.where('events.event_time >= :from', :from =>
options[:from])
+ end
+
+ if options[:to].present?
+ relation = relation.where('events.event_time <= :to', :to =>
options[:to])
+ end
+
+ relation.count
+ end
+
def to_polymorphic_path_param(polymorphic_path_extras)
[provider, self]
end
diff --git a/src/app/util/taskomatic.rb b/src/app/util/taskomatic.rb
index 0e95e12..1708970 100644
--- a/src/app/util/taskomatic.rb
+++ b/src/app/util/taskomatic.rb
@@ -135,12 +135,21 @@ module Taskomatic
Rails.logger.error ex.backtrace.join("\n")
task.state = Task::STATE_FAILED
task.instance.state = Instance::STATE_CREATE_FAILED
+
task.instance.events << Event.create(
:source => task.instance,
:event_time => DateTime.now,
:status_code => 'instance_launch_failed',
:summary => "#{task.instance.name}:
#{ex.message.to_s.split("\n").first}"
)
+
+ task.instance.provider_account.events << Event.create(
+ :source => task.instance.provider_account,
+ :event_time => DateTime.now,
+ :status_code => 'provider_account_failure',
+ :summary => "#{task.instance.name}:
#{ex.message.to_s.split("\n").first}"
+ )
+
raise ex
end
--
1.7.11.2