We were removing the agent in cases where we should not have been,
like if we had gotten a new agent, and then the old one finally aged
out of the filter. This corrects that, which shoudl make for far
fewer cases where there is no agent present.
---
.../lib/image_factory/image_factory_console.rb | 4 +-
.../console/spec/image_factory/console_spec.rb | 28 ++++++++++++++++++++
.../image_factory_connector.rb | 2 +-
3 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/services/image_factory/console/lib/image_factory/image_factory_console.rb
b/services/image_factory/console/lib/image_factory/image_factory_console.rb
index 3ff0318..a1a5b8c 100644
--- a/services/image_factory/console/lib/image_factory/image_factory_console.rb
+++ b/services/image_factory/console/lib/image_factory/image_factory_console.rb
@@ -49,7 +49,7 @@ class ImageFactoryConsole < Qmf2::ConsoleHandler
@logger.level = Logger::ERROR
@logger.datetime_format = "%Y-%m-%d %H:%M:%S"
end
- @handler = args.include?(:handler)? args[:handler]: BaseHandler.new
+ @handler = args.include?(:handler)? args[:handler]: BaseHandler.new(@logger)
super(@session)
end
@@ -93,7 +93,7 @@ class ImageFactoryConsole < Qmf2::ConsoleHandler
def agent_deleted(agent, reason)
@logger.debug "AGENT GONE: #{agent} at #{Time.now.utc}, because
#{reason}"
unless @q==nil
- @q = {} if @q.product == agent.product
+ @q = nil if (@q.product == agent.product && @q.name.eql?(agent.name))
end
end
diff --git a/services/image_factory/console/spec/image_factory/console_spec.rb
b/services/image_factory/console/spec/image_factory/console_spec.rb
index c7d5a69..4e3a0b1 100644
--- a/services/image_factory/console/spec/image_factory/console_spec.rb
+++ b/services/image_factory/console/spec/image_factory/console_spec.rb
@@ -46,6 +46,7 @@ module ImageFactory
before(:each) do
@agent = mock('agent', :null_object => true)
@agent.stub(:product).and_return("imagefactory")
+
@agent.stub(:name).and_return("redhat.com:imagefactory:b9e131c7-7905-409e-bfb5-dd4848a776a7")
@output = double('output')
@i2 = ImageFactoryConsole.new(:logger => @output)
end
@@ -63,6 +64,33 @@ module ImageFactory
end
end
+ describe "#agent_deleted" do
+ before(:each) do
+ @old_agent = mock('agent', :null_object => true)
+ @old_agent.stub(:product).and_return("imagefactory")
+
@old_agent.stub(:name).and_return("redhat.com:imagefactory:4eb3776e-d91e-4239-9a73-3ab43ecc7e15")
+ @output.should_receive(:debug).with(/GOT AN AGENT/)
+ @i2.agent_added(@agent)
+ end
+
+ it "logs when an agent is removed" do
+ @output.should_receive(:debug).with(/AGENT GONE/).as_null_object
+ @i2.agent_deleted(@agent, "aged")
+ end
+
+ it "removes the agent reference if removed agent is the same as console
reference" do
+ @output.should_receive(:debug).with(/AGENT GONE/).as_null_object
+ @i2.agent_deleted(@agent, "aged")
+ @i2.q.should be_nil
+ end
+
+ it "does not remove the agent reference if removed agent is the not same as
console reference" do
+ @output.should_receive(:debug).with(/AGENT GONE/).as_null_object
+ @i2.agent_deleted(@old_agent, "aged")
+ @i2.q.should_not be_nil
+ end
+ end
+
describe "#event_raised" do
before(:each) do
@data = mock('data', :null_object => true)
diff --git
a/services/image_factory/image_factory_connector/lib/image_factory_connector/image_factory_connector.rb
b/services/image_factory/image_factory_connector/lib/image_factory_connector/image_factory_connector.rb
index 98a7a32..6338c09 100644
---
a/services/image_factory/image_factory_connector/lib/image_factory_connector/image_factory_connector.rb
+++
b/services/image_factory/image_factory_connector/lib/image_factory_connector/image_factory_connector.rb
@@ -31,7 +31,7 @@ class ImageFactoryConnector < Sinatra::Base
set :views, File.dirname(__FILE__) + '/views'
l = Logger.new(STDOUT)
l.level = Logger::DEBUG
- @console = ImageFactoryConsole.new({:handler=>FactoryRestHandler.new(l)})
+ @console = ImageFactoryConsole.new({:handler=>FactoryRestHandler.new(l), :logger
=>l})
@console.start
set :console, @console
end
--
1.7.4