Merge "Fix names of parameters in importGpgKey"
diff --git a/src/com/mirantis/mk/Common.groovy b/src/com/mirantis/mk/Common.groovy
index 6a01a12..be9540b 100644
--- a/src/com/mirantis/mk/Common.groovy
+++ b/src/com/mirantis/mk/Common.groovy
@@ -32,9 +32,15 @@
*
* @param id Credentials name
*/
-def getCredentials(id) {
+def getCredentials(id, cred_type = "username_password") {
+ def credClass;
+ if(cred_type == "username_password"){
+ credClass = com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials.class
+ }else if(cred_type == "key"){
+ credClass = com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey.class
+ }
def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
- com.cloudbees.plugins.credentials.common.StandardUsernamePasswordCredentials.class,
+ credClass,
jenkins.model.Jenkins.instance
)
@@ -99,6 +105,23 @@
}
/**
+ * Print debug message, this message will show only if DEBUG global variable is present
+ * @param msg
+ * @param color Colorful output or not
+ */
+def debugMsg(msg, color = true){
+ def debugEnabled
+ try {
+ debugEnabled = DEBUG
+ } catch (MissingPropertyException e) {
+ debugEnabled = false
+ }
+ if(debugEnabled){
+ printMsg(msg, "red")
+ }
+}
+
+/**
* Print message
*
* @param msg Message to be printed
diff --git a/src/com/mirantis/mk/Salt.groovy b/src/com/mirantis/mk/Salt.groovy
index 91da71f..285de00 100644
--- a/src/com/mirantis/mk/Salt.groovy
+++ b/src/com/mirantis/mk/Salt.groovy
@@ -261,25 +261,41 @@
*/
def checkResult(result, failOnError = true) {
def common = new com.mirantis.mk.Common()
- for (entry in result['return']) {
- if (!entry) {
- if (failOnError) {
- throw new Exception("Salt API returned empty response: ${result}")
- } else {
- common.errorMsg("Salt API returned empty response: ${result}")
+ if(result['return']){
+ for (int i=0;i<result['return'].size();i++) {
+ def entry = result['return'][i]
+ if (!entry) {
+ if (failOnError) {
+ throw new Exception("Salt API returned empty response: ${result}")
+ } else {
+ common.errorMsg("Salt API returned empty response: ${result}")
+ }
}
- }
- for (node in entry) {
- for (resource in node.value) {
- if(!resource[result] || resource[result] != "true") {
- if (failOnError) {
- throw new Exception("Salt state on node ${node.key} failed: ${node.value}")
- } else {
- common.errorMsg("Salt state on node ${node.key} failed: ${node.value}")
+ for (int j=0;j<entry.size();j++) {
+ def nodeKey = entry.keySet()[j]
+ def node=entry[nodeKey]
+ for (int k=0;k<node.size();k++) {
+ def resource;
+ def resKey;
+ if(node instanceof Map){
+ resKey = node.keySet()[k]
+ }else if(node instanceof List){
+ resKey = k
+ }
+ resource = node[resKey]
+ common.errorMsg("Checking resource: ${resource}")
+ if(resource instanceof String || !resource["result"] || (resource["result"] instanceof String && resource["result"] != "true")){
+ if (failOnError) {
+ throw new Exception("Salt state on node ${nodeKey} failed: ${resource}. State output: ${node}")
+ } else {
+ common.errorMsg("Salt state on node ${nodeKey} failed: ${resource}. State output: ${node}")
+ }
}
}
}
}
+ }else{
+ common.errorMsg("Salt result hasn't return attribute! Result: ${result}")
}
}
@@ -293,30 +309,49 @@
def printSaltStateResult(result, onlyChanges = true) {
def common = new com.mirantis.mk.Common()
def out = [:]
- for (entry in result['return']) {
- for (node in entry) {
- out[node.key] = [:]
- for (resource in node.value) {
- if (resource instanceof String) {
- out[node.key] = node.value
- } else if (resource.value.result.toString().toBoolean() == false || resource.value.changes || onlyChanges == false) {
- out[node.key][resource.key] = resource.value
-
- //if (resource.value.result.toString().toBoolean() == false && resource.key instanceof String && node.key instanceof String) {
- // common.warningMsg("Resource ${resource.key} failed on node ${node.key}!")
- //}
+ if(result['return']){
+ for (int i=0; i<result['return'].size(); i++) {
+ def entry = result['return'][i]
+ for (int j=0; j<entry.size(); j++) {
+ common.errorMsg("Entry is: ${entry}")
+ def nodeKey = entry.keySet()[j]
+ def node=entry[nodeKey]
+ out[nodeKey] = [:]
+ if(node instanceof Iterable){
+ for (int k=0; k<node.size(); k++) {
+ def resource;
+ def resKey;
+ if(node instanceof Map){
+ resKey = node.keySet()[k]
+ }else if(node instanceof List){
+ resKey=k
+ }
+ resource = node[resKey]
+ if (resource instanceof String) {
+ //ORIGINAL??out[node.key] = node.value
+ out[nodeKey][resKey] = resource
+ } else if (resource.result.toString().toBoolean() == false || resource.changes || onlyChanges == false) {
+ out[nodeKey][resKey] = resource.value
+ }
+ }
+ } else {
+ out[nodeKey] = node.toString();
}
}
}
- }
- for (node in out) {
- if (node.value) {
- println "Node ${node.key} changes:"
- print new groovy.json.JsonBuilder(node.value).toPrettyString().replace('\\n', System.getProperty('line.separator'))
- } else {
- println "No changes for node ${node.key}"
+ for (int i=0; i<out.size(); i++) {
+ def nodeKey = out.keySet()[i]
+ def node=out[nodeKey]
+ if (node) {
+ println "Node ${nodeKey} changes:"
+ print new groovy.json.JsonBuilder(node).toPrettyString().replace('\\n', System.getProperty('line.separator'))
+ } else {
+ println "No changes for node ${nodeKey}"
+ }
}
+ }else{
+ common.errorMsg("Salt result hasn't return attribute! Result: ${result}")
}
}
@@ -326,22 +361,46 @@
* @param result Parsed response of Salt API
*/
def printSaltCommandResult(result) {
+ def common = new com.mirantis.mk.Common()
def out = [:]
- for (entry in result['return']) {
- for (node in entry) {
- out[node.key] = [:]
- for (resource in node.value) {
- out[node.key] = node.value
+ if(result['return']){
+ for (int i=0; i<result['return'].size(); i++) {
+ def entry = result['return'][i]
+ for (int j=0; j<entry.size(); j++) {
+ common.errorMsg("Entry is: ${entry}")
+ def nodeKey = entry.keySet()[j]
+ def node=entry[nodeKey]
+ out[nodeKey] = [:]
+ if(node instanceof Iterable){
+ for (int k=0; k<node.size(); k++) {
+ def resource;
+ def resKey;
+ if(node instanceof Map){
+ resKey = node.keySet()[k]
+ }else if(node instanceof List){
+ resKey=k
+ }
+ resource = node[resKey]
+ //ORIGINAL??out[node.key] = node.value
+ out[nodeKey][resKey] = resource
+ }
+ } else {
+ out[nodeKey] = node.toString();
+ }
}
}
- }
- for (node in out) {
- if (node.value) {
- println "Node ${node.key} changes:"
- print new groovy.json.JsonBuilder(node.value).toPrettyString()
- } else {
- println "No changes for node ${node.key}"
+ for (int i=0; i<out.size(); i++) {
+ def nodeKey = out.keySet()[i]
+ def node = out[nodeKey]
+ if (node) {
+ common.infoMsg("Node ${nodeKey} changes:")
+ common.infoMsg(new groovy.json.JsonBuilder(node).toPrettyString())
+ } else {
+ common.infoMsg("No changes for node ${nodeKey}")
+ }
}
+ }else{
+ common.errorMsg("Salt result hasn't return attribute! Result: ${result}")
}
}