All offline nodes are removed as failed nodes

remove_failed_nodes took only newly deployed nodes uids into
consideration for checking for offline nodes. Now all nodes in cluster
are checked for being available.

Change-Id: Ifbdec3d6f8cd1b2751afb45c185efd5c5316a817
Closes-bug: #1502295
This commit is contained in:
Maciej Kwiek 2015-10-14 11:15:47 +02:00
parent a090546d43
commit d10e78b0b0
2 changed files with 28 additions and 6 deletions

View File

@ -149,7 +149,7 @@ module Astute
# Removes nodes which failed to provision
def remove_failed_nodes(deployment_info, pre_deployment, post_deployment)
uids = deployment_info.map { |node| node["uid"]}
uids = get_uids_from_deployment_info deployment_info
required_nodes = deployment_info.select { |node| node["fail_if_error"] }
required_uids = required_nodes.map { |node| node["uid"]}
@ -257,5 +257,13 @@ module Astute
available_uids
end
def get_uids_from_deployment_info(deployment_info)
top_level_uids = deployment_info.map{ |node| node["uid"] }
inside_uids = deployment_info.inject([]) do |uids, node|
uids += node.fetch('nodes', []).map{ |n| n['uid'] }
end
top_level_uids | inside_uids
end
end
end

View File

@ -416,14 +416,12 @@ describe Astute::DeploymentEngine do
'nodes' => [
{'uid' => '1', 'role' => 'compute'},
{'uid' => '2', 'role' => 'primary-controller'},
{'uid' => '4', 'role' => 'compute'}
]
},
{'uid' => "2", 'priority' => 10, 'role' => 'primary-controller',
'nodes' => [
{'uid' => '1', 'role' => 'compute'},
{'uid' => '2', 'role' => 'primary-controller'},
{'uid' => '4', 'role' => 'compute'}
]
}
]
@ -443,6 +441,12 @@ describe Astute::DeploymentEngine do
'error_type' => 'provision',
'role' => 'hook',
'error_msg' => 'Node is not ready for deployment: mcollective has not answered'
},{
'uid' => '4',
'status' => 'error',
'error_type' => 'provision',
'role' => 'hook',
'error_msg' => 'Node is not ready for deployment: mcollective has not answered'
}],
'error' => 'Node is not ready for deployment'
)
@ -488,14 +492,12 @@ describe Astute::DeploymentEngine do
'nodes' => [
{'uid' => '1', 'role' => 'compute'},
{'uid' => '2', 'role' => 'primary-controller'},
{'uid' => '4', 'role' => 'compute'}
]
},
{'uid' => "2", 'priority' => 10, 'role' => 'primary-controller',
'nodes' => [
{'uid' => '1', 'role' => 'compute'},
{'uid' => '2', 'role' => 'primary-controller'},
{'uid' => '4', 'role' => 'compute'}
]
}
]
@ -515,6 +517,12 @@ describe Astute::DeploymentEngine do
'error_type' => 'provision',
'role' => 'hook',
'error_msg' => 'Node is not ready for deployment: mcollective has not answered'
}, {
'uid' => '4',
'status' => 'error',
'error_type' => 'provision',
'role' => 'hook',
'error_msg' => 'Node is not ready for deployment: mcollective has not answered'
}],
'error' => 'Node is not ready for deployment'
)
@ -546,7 +554,7 @@ describe Astute::DeploymentEngine do
{'uid' => '1', 'role' => 'compute'},
{'uid' => '2', 'role' => 'primary-controller'},
{'uid' => '4', 'role' => 'compute'}
]}
]}
]
res1 = {:data => {:node_type => "target\n"},
@ -565,6 +573,12 @@ describe Astute::DeploymentEngine do
'error_type' => 'provision',
'role' => 'hook',
'error_msg' => 'Node is not ready for deployment: mcollective has not answered'
},{
'uid' => '4',
'status' => 'error',
'error_type' => 'provision',
'role' => 'hook',
'error_msg' => 'Node is not ready for deployment: mcollective has not answered'
}],
'error' => 'Node is not ready for deployment'
)