From f030161d190f06b8c8fd3c158b46b4625b3f5151 Mon Sep 17 00:00:00 2001 From: Georgy Kibardin Date: Thu, 8 Sep 2016 11:29:56 +0300 Subject: [PATCH] Increase xml rpc timeout With hundreds of nodes Cobbler sync cannot fit default 30 secods timeout. Cobbler performance is going to be investigated in the next release. By now lets just increase the timeout. Change-Id: Ief8ff93fc808549e8d729040512a266b0c09383d Closes-Bug: #1608700 --- lib/astute/cobbler.rb | 1 + spec/unit/cobbler_spec.rb | 7 +++++++ spec/unit/provision_spec.rb | 2 ++ 3 files changed, 10 insertions(+) diff --git a/lib/astute/cobbler.rb b/lib/astute/cobbler.rb index 8c918dcf..bd8839d1 100644 --- a/lib/astute/cobbler.rb +++ b/lib/astute/cobbler.rb @@ -39,6 +39,7 @@ module Astute Astute.logger.debug("Connecting to cobbler with: host: #{host} port: #{port} path: #{path}") @remote = XMLRPC::Client.new(host, path, port) + @remote.timeout = 120 Astute.logger.debug("Cobbler initialize with username: #{@username}, password: #{@password}") end diff --git a/spec/unit/cobbler_spec.rb b/spec/unit/cobbler_spec.rb index ac395a06..53755279 100644 --- a/spec/unit/cobbler_spec.rb +++ b/spec/unit/cobbler_spec.rb @@ -28,6 +28,7 @@ describe Cobbler do password = 'pass' remote = mock() + remote.expects(:timeout=) tmp = XMLRPC::Client XMLRPC::Client = mock() do expects(:new).with(host, path, port).returns(remote) @@ -47,6 +48,7 @@ describe Cobbler do path = "/api" port = "1234" remote = mock() + remote.expects(:timeout=) tmp = XMLRPC::Client XMLRPC::Client = mock() do expects(:new).with(host, path, port).returns(remote) @@ -64,6 +66,7 @@ describe Cobbler do context "cobbler methods" do before(:each) do remote = mock() do + stubs(:timeout=) stubs(:call) stubs(:call).with('login', 'cobbler', 'cobbler').returns('remotetoken') end @@ -173,6 +176,7 @@ describe Cobbler do it 'should generate token in every cobbler call where token need' do remote = mock() do + stubs(:timeout=) stubs(:call).twice.with('sync', 'remotetoken') expects(:call).twice.with('login', 'cobbler', 'cobbler').returns('remotetoken') end @@ -200,6 +204,7 @@ describe Cobbler do it 'should try sync several time before raise a exception (Net)' do remote = mock() do + stubs(:timeout=) stubs(:call).with('sync', 'remotetoken') .raises(Net::ReadTimeout) .then.returns(nil) @@ -216,6 +221,7 @@ describe Cobbler do it 'should try sync several time before raise a exception (XMLRPC)' do remote = mock() do + stubs(:timeout=) stubs(:call).with('sync', 'remotetoken') .raises(XMLRPC::FaultException.new("", "")) .then.returns(nil) @@ -232,6 +238,7 @@ describe Cobbler do it 'should raise a exception if sync do not succeed after several(3) tries' do remote = mock() do + stubs(:timeout=) stubs(:call).with('sync', 'remotetoken') .raises(Net::ReadTimeout) .then.raises(Net::ReadTimeout) diff --git a/spec/unit/provision_spec.rb b/spec/unit/provision_spec.rb index 6b771b82..fa1700b7 100644 --- a/spec/unit/provision_spec.rb +++ b/spec/unit/provision_spec.rb @@ -56,6 +56,7 @@ describe Astute::Provisioner do before(:each) do remote = mock() do + stubs(:timeout=) stubs(:call) stubs(:call).with('login', 'cobbler', 'cobbler').returns('remotetoken') end @@ -208,6 +209,7 @@ describe Astute::Provisioner do context 'node state cases' do before(:each) do remote = mock() do + stubs(:timeout=) stubs(:call) stubs(:call).with('login', 'cobbler', 'cobbler').returns('remotetoken') end