installInfraKvm fix for slow responding environments.
Issue:
- Minions are registered to salt msater however read timeout
occurs during saltcmdrun check which causes whole job to fail.
This happens only on slow responding environments.
Fix:
- Add try catch loop to process read timeouts as noncritical fault
Addons:
- Function logic has been changed to get "build minions list loop"
out of timeout section.
- Timeout call now has expilit unit set: "MINUTES"
Change-Id: Ia3f6ea027594e8427778d877d36f48d9b466ae80
diff --git a/src/com/mirantis/mk/Salt.groovy b/src/com/mirantis/mk/Salt.groovy
index 0f81287..84659f6 100644
--- a/src/com/mirantis/mk/Salt.groovy
+++ b/src/com/mirantis/mk/Salt.groovy
@@ -269,27 +269,35 @@
if (waitUntilPresent){
def count = 0
while(count < maxRetries) {
+ try {
+ def out = runSaltCommand(saltId, 'local', ['expression': target, 'type': 'compound'], 'cmd.shell', batch, [cmd], null, 5)
+ if (output) {
+ printSaltCommandResult(out)
+ }
+ def valueMap = out["return"][0]
+ def result = valueMap.get(valueMap.keySet()[0])
+ def resultsArray = result.tokenize("\n")
+ def size = resultsArray.size()
+ if (size >= answers) {
+ return out
+ }
+ count++
+ sleep(time: 1000, unit: 'MILLISECONDS')
+ common.infoMsg("Waiting for ${cmd} on ${target} to be in correct state")
+ } catch (Exception er) {
+ common.infoMsg('[WARNING]: runSaltCommand command read timeout within 5 seconds. You have very slow or broken environment')
+ }
+ }
+ } else {
+ try {
def out = runSaltCommand(saltId, 'local', ['expression': target, 'type': 'compound'], 'cmd.shell', batch, [cmd], null, 5)
if (output) {
printSaltCommandResult(out)
}
- def valueMap = out["return"][0]
- def result = valueMap.get(valueMap.keySet()[0])
- def resultsArray = result.tokenize("\n")
- def size = resultsArray.size()
- if (size >= answers) {
- return out
- }
- count++
- sleep(time: 1000, unit: 'MILLISECONDS')
- common.infoMsg("Waiting for ${cmd} on ${target} to be in correct state")
+ return out
+ } catch (Exception er) {
+ common.infoMsg('[WARNING]: runSaltCommand command read timeout within 5 seconds. You have very slow or broken environment')
}
- } else {
- def out = runSaltCommand(saltId, 'local', ['expression': target, 'type': 'compound'], 'cmd.shell', batch, [cmd], null, 5)
- if (output) {
- printSaltCommandResult(out)
- }
- return out
}
// otherwise throw exception
common.errorMsg("Status of command ${cmd} on ${target} failed, please check it.")