Fix getWsrepParameters behavior and Update getGaleraLastShutdownNode and getWsrepParameters
Related: PROD-27547
Change-Id: I298af16a024e4e8a8d95e1a620b8879b3b37600a
(cherry picked from commit 1281cdec6e2f406fc6b37be6d038205075ec5dae)
(cherry picked from commit 1fbda52179c687286c0c3590bab85cb9b11a5f44)
diff --git a/src/com/mirantis/mk/Galera.groovy b/src/com/mirantis/mk/Galera.groovy
index 8da74d5..394dfc6 100644
--- a/src/com/mirantis/mk/Galera.groovy
+++ b/src/com/mirantis/mk/Galera.groovy
@@ -17,7 +17,9 @@
*/
def getWsrepParameters(env, target, parameters=[], print=false) {
- result = []
+ def salt = new com.mirantis.mk.Salt()
+ def common = new com.mirantis.mk.Common()
+ result = [:]
out = salt.runSaltProcessStep(env, "${target}", "mysql.status", [], null, false)
outlist = out['return'][0]
resultYaml = outlist.get(outlist.keySet()[0]).sort()
@@ -25,23 +27,18 @@
common.prettyPrint(resultYaml)
}
if (parameters instanceof String) {
- value = resultYaml[key]
- if (value instanceof String && value.isBigDecimal()) {
- value = value.toBigDecimal()
- }
- result = [key: value]
+ parameters = [parameters]
+ }
+ if (parameters == [] || parameters == ['']) {
+ result = resultYaml
} else {
- if (parameters == []) {
- result = resultYaml
- } else {
- for (key in parameters) {
- value = resultYaml[key]
- if (value instanceof String && value.isBigDecimal()) {
- value = value.toBigDecimal()
- }
- result << [key: value]
- }
+ for (String param in parameters) {
+ value = resultYaml[param]
+ if (value instanceof String && value.isBigDecimal()) {
+ value = value.toBigDecimal()
}
+ result[param] = value
+ }
}
return result
}
@@ -245,13 +242,27 @@
}
}
-def getGaleraLastShutdownNode(env) {
+/** Returns last shutdown node of Galera cluster
+@param env Salt Connection object or pepperEnv
+@param nodes List of nodes to check only (defaults to []). If not provided, it will check all nodes.
+ Use this parameter if the cluster splits to several components and you only want to check one fo them.
+@return status ip address or hostname of last shutdown node
+*/
+
+def getGaleraLastShutdownNode(env, nodes = []) {
def salt = new com.mirantis.mk.Salt()
def common = new com.mirantis.mk.Common()
- members = ''
+ members = []
lastNode = [ip: '', seqno: -2]
try {
- members = salt.getReturnValues(salt.getPillar(env, "I@galera:master", "galera:master:members"))
+ if (nodes) {
+ nodes = salt.getIPAddressesForNodenames(env, nodes)
+ for (node in nodes) {
+ members = [host: "${node.get(node.keySet()[0])}"] + members
+ }
+ } else {
+ members = salt.getReturnValues(salt.getPillar(env, "I@galera:master", "galera:master:members"))
+ }
} catch (Exception e) {
common.errorMsg('Could not retrieve members list')
common.errorMsg(e.getMessage())