Fix master-node only graph processing
Check for nodes list emptiness when discovering online nodes. With master-only graph we do not have any nodes except for virtual_sync_node and master. This leads to failure of mcollective discover as it receives an empty list Change-Id: I38bfd9b98f79ba83527de5956b66d2fc3ddb0020 Closes-bug: #1590337
This commit is contained in:
parent
19a752426c
commit
adf17f1e30
|
@ -234,23 +234,25 @@ module Astute
|
|||
uids.delete('virtual_sync_node')
|
||||
# In case of big amount of nodes we should do several calls to be sure
|
||||
# about node status
|
||||
Astute.config.mc_retries.times.each do
|
||||
systemtype = Astute::MClient.new(
|
||||
@ctx,
|
||||
"systemtype",
|
||||
uids,
|
||||
_check_result=false,
|
||||
10
|
||||
)
|
||||
available_nodes = systemtype.get_type.select do |node|
|
||||
node.results[:data][:node_type].chomp == "target"
|
||||
if !uids.empty?
|
||||
Astute.config.mc_retries.times.each do
|
||||
systemtype = Astute::MClient.new(
|
||||
@ctx,
|
||||
"systemtype",
|
||||
uids,
|
||||
_check_result=false,
|
||||
10
|
||||
)
|
||||
available_nodes = systemtype.get_type.select do |node|
|
||||
node.results[:data][:node_type].chomp == "target"
|
||||
end
|
||||
|
||||
available_uids += available_nodes.map { |node| node.results[:sender] }
|
||||
uids -= available_uids
|
||||
break if uids.empty?
|
||||
|
||||
sleep Astute.config.mc_retry_interval
|
||||
end
|
||||
|
||||
available_uids += available_nodes.map { |node| node.results[:sender] }
|
||||
uids -= available_uids
|
||||
break if uids.empty?
|
||||
|
||||
sleep Astute.config.mc_retry_interval
|
||||
end
|
||||
|
||||
Astute.logger.warn "Offline node #{uids}" if uids.present?
|
||||
|
|
|
@ -67,6 +67,20 @@ describe Astute::TaskDeployment do
|
|||
}
|
||||
end
|
||||
|
||||
let(:tasks_graph_2) do
|
||||
{"master"=>
|
||||
[{
|
||||
"type"=>"noop",
|
||||
"fail_on_error"=>true,
|
||||
"required_for"=>[],
|
||||
"requires"=> [],
|
||||
"id"=>"ironic_post_swift_key",
|
||||
"parameters"=>{},
|
||||
}],
|
||||
"null"=> []
|
||||
}
|
||||
end
|
||||
|
||||
let(:tasks_directory) do
|
||||
{"ironic_post_swift_key"=>{
|
||||
"parameters"=>{
|
||||
|
@ -148,6 +162,20 @@ describe Astute::TaskDeployment do
|
|||
tasks_directory: tasks_directory)
|
||||
end
|
||||
|
||||
it 'should not fail if there are no nodes to check for offline nodes' do
|
||||
Astute::TaskPreDeploymentActions.any_instance.stubs(:process)
|
||||
task_deployment.stubs(:write_graph_to_file)
|
||||
ctx.stubs(:report)
|
||||
|
||||
task_deployment.expects(:fail_offline_nodes).returns([])
|
||||
|
||||
Astute::TaskCluster.any_instance.stubs(:run).returns({:success => true})
|
||||
task_deployment.deploy(
|
||||
tasks_metadata: tasks_metadata,
|
||||
tasks_graph: tasks_graph_2,
|
||||
tasks_directory: tasks_directory)
|
||||
end
|
||||
|
||||
it 'should setup stop condition' do
|
||||
Astute::TaskPreDeploymentActions.any_instance.stubs(:process)
|
||||
task_deployment.stubs(:write_graph_to_file)
|
||||
|
|
Loading…
Reference in New Issue