[PATCH conductor] BZ 783378 - log reboot (and other) instance action

jprovazn at redhat.com jprovazn at redhat.com
Wed Feb 8 12:17:01 UTC 2012


From: Jan Provaznik <jprovazn at redhat.com>

- instance event with message 'action queued' is now created
on any instance action
- event time is now displayed in the list of instance events
---
 src/app/controllers/instances_controller.rb |    2 ++
 src/app/models/instance.rb                  |   14 +++++++++-----
 src/app/views/instances/_history.html.haml  |    2 +-
 src/spec/models/instance_spec.rb            |    9 +++++++++
 4 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/src/app/controllers/instances_controller.rb b/src/app/controllers/instances_controller.rb
index 96bc2fe..08ce4f5 100644
--- a/src/app/controllers/instances_controller.rb
+++ b/src/app/controllers/instances_controller.rb
@@ -188,6 +188,8 @@ class InstancesController < ApplicationController
         notices << "#{instance.name}: #{t('instances.flash.notice.reboot', :name => instance.name)}"
       rescue Exception => err
         errors << "#{instance.name}: " + err
+        logger.error err.message
+        logger.error err.backtrace.join("\n ")
       end
     end
     # If nothing is selected, display an error message:
diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb
index 68ed3bb..5ecfa3f 100644
--- a/src/app/models/instance.rb
+++ b/src/app/models/instance.rb
@@ -217,11 +217,15 @@ class Instance < ActiveRecord::Base
 
   def queue_action(user, action, data = nil)
     return false unless get_action_list.include?(action)
-    task = InstanceTask.new({ :user        => user,
-                              :task_target => self,
-                              :action      => action,
-                              :args        => data})
-    task.save!
+    task = InstanceTask.create!({ :user        => user,
+                                  :task_target => self,
+                                  :action      => action,
+                                  :args        => data})
+
+    event = Event.create!(:source => self, :event_time => Time.now,
+                          :summary => "#{action} action queued",
+                          :status_code => "#{action}_queued")
+
     return task
   end
 
diff --git a/src/app/views/instances/_history.html.haml b/src/app/views/instances/_history.html.haml
index ee461e6..60f09e5 100644
--- a/src/app/views/instances/_history.html.haml
+++ b/src/app/views/instances/_history.html.haml
@@ -5,6 +5,6 @@
   %ol
     - @events.each do |event|
       %li
-        = event.summary
+        = "#{event.event_time.strftime('%d-%b-%Y %H:%M:%S')}: #{event.summary}"
 
   = will_paginate @events
diff --git a/src/spec/models/instance_spec.rb b/src/spec/models/instance_spec.rb
index d712411..66b1365 100644
--- a/src/spec/models/instance_spec.rb
+++ b/src/spec/models/instance_spec.rb
@@ -92,6 +92,15 @@ describe Instance do
     valid_task.should_not == false
   end
 
+  it "should create new event when an action is queued" do
+    @instance.save!
+    @instance.stub!(:get_action_list).and_return(@actions)
+    user = User.new
+    @instance.queue_action(user, 'stop')
+    @instance.events.should_not be_empty
+    @instance.events.last.status_code.should == 'stop_queued'
+  end
+
   describe "with time capsule" do
 
     it "should properly calculate the total time that the instance has been in a monitored state" do
-- 
1.7.7.5




More information about the aeolus-devel mailing list