Add check for disks i/o utilization to verifyGaleraStatus method

	- Only test disk utilization on xtrabackup nodes

Depends-On: https://gerrit.mcp.mirantis.com/#/c/41885/

Related: PROD-28135
Fixes: PROD-29932

Change-Id: I32254368fb6b9639d1a7a4474ac44402fef04c2a
(cherry picked from commit da7ff407f983678f6a73d44838f3d53f3f9850b9)
(cherry picked from commit 047257f1a10e4edb14e95549c8b6d57cb324851f)
(cherry picked from commit 74f5175309aa7a04663ed37236a2271b64ea2c3f)
diff --git a/src/com/mirantis/mk/Galera.groovy b/src/com/mirantis/mk/Galera.groovy
index 7627077..f9ba776 100644
--- a/src/com/mirantis/mk/Galera.groovy
+++ b/src/com/mirantis/mk/Galera.groovy
@@ -97,6 +97,25 @@
         common.errorMsg("No Galera slave was reachable.")
         return 130
     }
+    def checkTargets = salt.getMinions(env, "I@xtrabackup:client or I@xtrabackup:server")
+    for (checkTarget in checkTargets) {
+        def nodeStatus = salt.minionsReachable(env, 'I@salt:master', checkTarget, null, 10, 5)
+        if (nodeStatus != null) {
+            def iostatRes = salt.getIostatValues(['saltId': env, 'target': checkTarget, 'parameterName': "%util", 'output': true])
+            if (iostatRes == [:]) {
+                common.errorMsg("Recevived empty response from iostat call on ${checkTarget}. Maybe 'sysstat' package is not installed?")
+                return 140
+            }
+            for (int i = 0; i < iostatRes.size(); i++) {
+                def diskKey = iostatRes.keySet()[i]
+                if (!(iostatRes[diskKey].toString().isBigDecimal() && (iostatRes[diskKey].toBigDecimal() < 50 ))) {
+                    common.errorMsg("Disk ${diskKey} has to high i/o utilization. Maximum value is 50 and current value is ${iostatRes[diskKey]}.")
+                    return 141
+                }
+            }
+        }
+    }
+    common.infoMsg("Disk i/o utilization was checked and everything seems to be in order.")
     if (checkTimeSync && !salt.checkClusterTimeSync(env, "I@galera:master or I@galera:slave")) {
         common.errorMsg("Time in cluster is desynchronized or it couldn't be detemined. You should fix this issue manually before proceeding.")
         return 131