Add 'retries_wait' parameter for enforceState method

Related: PROD-26997 (PROD:26997)

Change-Id: I20d17bfbc9502279ee2e1c162b9db5c1016e21b5
diff --git a/src/com/mirantis/mk/Salt.groovy b/src/com/mirantis/mk/Salt.groovy
index 12195f4..982a9c4 100644
--- a/src/com/mirantis/mk/Salt.groovy
+++ b/src/com/mirantis/mk/Salt.groovy
@@ -162,7 +162,7 @@
 def enforceStateWithExclude(Map params) {
     //Set defaults
     defaults = ["excludedStates": "", "output": true, "failOnError": true, "batch": null, "optional": false,
-                "read_timeout": -1, "retries": -1, "queue": true, "saltArgs": []]
+                "read_timeout": -1, "retries": -1, "retries_wait": 5, "queue": true, "saltArgs": []]
     params = defaults + params
     params.saltArgs << "exclude=${params.excludedStates}"
     params.remove('excludedStates')
@@ -170,14 +170,14 @@
 }
 
 
-def enforceStateWithExclude(saltId, target, state, excludedStates = "", output = true, failOnError = true, batch = null, optional = false, read_timeout=-1, retries=-1, queue=true, saltArgs=[]) {
+def enforceStateWithExclude(saltId, target, state, excludedStates = "", output = true, failOnError = true, batch = null, optional = false, read_timeout=-1, retries=-1, queue=true, saltArgs=[], retries_wait=5) {
 // Deprecated, convert state to use Map as input parameter
     def common = new com.mirantis.mk.Common()
     common.infoMsg("This method will be deprecated. Convert you method call to use Map as input parameter")
     // Convert to Map
     params = ['saltId': saltId, 'target': target, 'state': state, 'excludedStates': excludedStates, 'output': output,
                 'failOnError': failOnError, 'batch': batch, 'optional': optional, 'read_timeout': read_timeout,
-                'retries': retries, 'queue': queue, 'saltArgs': saltArgs]
+                'retries': retries, 'retries_wait': retries_wait, 'queue': queue, 'saltArgs': saltArgs]
     // Call new method with Map as parameter
     return enforceStateWithExclude(params)
 }
@@ -202,7 +202,7 @@
     def common = new com.mirantis.mk.Common()
     //Set defaults
     defaults = ["testTargetMatcher": "", "output": true, "failOnError": true, "batch": null, "optional": false,
-                "read_timeout": -1, "retries": -1, "queue": true, "saltArgs":[]]
+                "read_timeout": -1, "retries": -1, "retries_wait": 5, "queue": true, "saltArgs":[]]
     params = defaults + params
     if (!params.testTargetMatcher) {
         params.testTargetMatcher = params.target
@@ -220,14 +220,14 @@
 }
 
 
-def enforceStateWithTest(saltId, target, state, testTargetMatcher = "", output = true, failOnError = true, batch = null, optional = false, read_timeout=-1, retries=-1, queue=true, saltArgs=[]) {
+def enforceStateWithTest(saltId, target, state, testTargetMatcher = "", output = true, failOnError = true, batch = null, optional = false, read_timeout=-1, retries=-1, queue=true, saltArgs=[], retries_wait=5) {
 // Deprecated, convert state to use Map as input parameter
     def common = new com.mirantis.mk.Common()
     common.infoMsg("This method will be deprecated. Convert you method call to use Map as input parameter")
     // Convert to Map
     params = ['saltId': saltId, 'target': target, 'state': state, 'testTargetMatcher': testTargetMatcher, 'output': output,
                 'failOnError': failOnError, 'batch': batch, 'optional': optional, 'read_timeout': read_timeout,
-                'retries': retries, 'queue': queue, 'saltArgs': saltArgs]
+                'retries': retries, 'retries_wait': retries_wait, 'queue': queue, 'saltArgs': saltArgs]
     // Call new method with Map as parameter
     return enforceStateWithTest(params)
 }
@@ -250,8 +250,8 @@
 def enforceState(Map params) {
     def common = new com.mirantis.mk.Common()
     //Set defaults
-    defaults = ["output": true, "failOnError": true, "batch": null, "optional": false,
-                "read_timeout": -1, "retries": -1, "queue": true, "saltArgs": [], "minionRestartWaitTimeout": 10]
+    defaults = ["output": true, "failOnError": true, "batch": null, "optional": false, "read_timeout": -1,
+                "retries": -1, "retries_wait": 5, "queue": true, "saltArgs": [], "minionRestartWaitTimeout": 10]
     params = defaults + params
     // add state to salt args
     if (params.state instanceof String) {
@@ -277,6 +277,7 @@
                 out = runSaltCommand(params.saltId, 'local', ['expression': params.target, 'type': 'compound'], 'state.sls', params.batch, params.saltArgs.reverse(), kwargs, -1, params.read_timeout)
                 // failOnError should be passed as true because we need to throw exception for retry block handler
                 checkResult(out, true, params.output, true, retriesCounter < params.retries) //disable ask on error for every interation except last one
+                sleep(retries_wait)
             }
         } else {
             // we have to reverse order in saltArgs because salt state have to be first
@@ -290,14 +291,14 @@
     }
 }
 
-def enforceState(saltId, target, state, output = true, failOnError = true, batch = null, optional = false, read_timeout=-1, retries=-1, queue=true, saltArgs = [], minionRestartWaitTimeout=10) {
+def enforceState(saltId, target, state, output = true, failOnError = true, batch = null, optional = false, read_timeout=-1, retries=-1, queue=true, saltArgs = [], minionRestartWaitTimeout=10, retries_wait=5) {
 // Deprecated, convert state to use Map as input parameter
     def common = new com.mirantis.mk.Common()
     common.infoMsg("This method will be deprecated. Convert you method call to use Map as input parameter")
     // Convert to Map
-    params = ['saltId': saltId, 'target': target, 'state': state, 'output': output,
-                'failOnError': failOnError, 'batch': batch, 'optional': optional, 'read_timeout': read_timeout,
-                'retries': retries, 'queue': queue, 'saltArgs': saltArgs, 'minionRestartWaitTimeout': minionRestartWaitTimeout]
+    params = ['saltId': saltId, 'target': target, 'state': state, 'output': output, 'failOnError': failOnError,
+                'batch': batch, 'optional': optional, 'read_timeout': read_timeout, 'retries': retries,
+                'retries_wait': retries_wait, 'queue': queue, 'saltArgs': saltArgs, 'minionRestartWaitTimeout': minionRestartWaitTimeout]
     // Call new method with Map as parameter
     return enforceState(params)
 }