<string>0bc5dcb90964741115308f13c042998b6bbfbc66</string>
<string>0d3674cfaee34604a98aa6375a979e4bef3077ef</string>
<string>1469b56a8f49513d0f8c94ab23d328e1137922ad</string>
+ <string>1789b0d914f0084ed7fd333b0b0eea748709ada6</string>
<string>1a82acd5437b3c3aef5a000285178fc408c3c0c2</string>
<string>1ac9db42ad5c4b6b6ccd110bd83605d3554ce88b</string>
<string>1b6ee1e9ec250e65df3f124a6b10a9c745d06476</string>
<string>2e7251e3f5b2236d842994720f6769528135312d</string>
<string>2ed34917927e5af323c645c90f9be85d1c44517d</string>
<string>32c9e3fa097fa7f0055750a44cebc64d534dc111</string>
+ <string>3500985ded84809f4898727b418384f553afe296</string>
<string>3587988807a6fe4160fc7370e4d3b46e494bb35f</string>
<string>3a012e0fadd095372e77b0655aa765f9409455f8</string>
<string>3e86b636ead9f2cf44bf40e2895ab9c6c264e6e8</string>
<string>7d581316af66034919a152e9014b8b0a69657e6e</string>
<string>7d5ae9a876a71918f07edc15742ec5c01d9193ed</string>
<string>7f9dd3bb442e5ac921535b98e4170f48f06901f3</string>
+ <string>7fed9990e3a66c5293e9c2b02bd3590e1e231a9f</string>
<string>85aec29c6dd85c3a72435a1e4aaa85fef7805a22</string>
<string>88e6f9c2fb68fd50617a6f038da02bb2735a343f</string>
<string>8acf4be14ab31b3a9a9f08d448b5e7e87a973bf6</string>
<string>8cdb455146cce59033173a6c269bc396f9b981f9</string>
<string>8f55d4f32226edf90e29cdbece0c0aaa7e1636ec</string>
+ <string>91dd560b8c31636f4cf0025bfad0abd92800d102</string>
<string>92318df17b760e3dd8e8446dde7a9ef7ea92a41b</string>
<string>931836c0b5555ab3399a5b64c68e04bc86186f9f</string>
<string>93b2188439cc18091839439e9650d09e3c6dca4c</string>
+ <string>93f92899721b83cd85a647c5c281500118f881d3</string>
<string>94b94d0126370f5024b3d51b99b838f363afe3ee</string>
<string>9897016720cecc6b36292cae818d8036d7f86aa7</string>
<string>9a2a336769f722b4adf971a33365f364df488a77</string>
<string>method hudson.model.Slave getComputer</string>
<string>method hudson.model.Slave getLauncher</string>
<string>method hudson.plugins.sshslaves.SSHLauncher getHost</string>
+ <string>method java.io.BufferedReader readLine</string>
+ <string>method java.io.Flushable flush</string>
+ <string>method java.io.Writer write java.lang.String</string>
+ <string>method java.lang.AutoCloseable close</string>
<string>method java.lang.Class getClassLoader</string>
<string>method java.lang.Class newInstance</string>
<string>method java.lang.Process waitFor</string>
<string>method java.lang.String getBytes</string>
<string>method java.lang.Thread join</string>
<string>method java.lang.Thread start</string>
+ <string>method java.net.HttpURLConnection setRequestMethod java.lang.String</string>
+ <string>method java.net.URL openConnection</string>
+ <string>method java.net.URLConnection getInputStream</string>
+ <string>method java.net.URLConnection getOutputStream</string>
+ <string>method java.net.URLConnection setDoOutput boolean</string>
+ <string>method java.net.URLConnection setRequestProperty java.lang.String java.lang.String</string>
<string>method java.util.Collection remove java.lang.Object</string>
<string>method java.util.Dictionary get java.lang.Object</string>
<string>method java.util.Properties load java.io.InputStream</string>
+ <string>new java.io.BufferedReader java.io.Reader</string>
<string>new java.io.File java.lang.String</string>
<string>new java.io.File java.lang.String java.lang.String</string>
<string>new java.io.FileInputStream java.lang.String</string>
+ <string>new java.io.InputStreamReader java.io.InputStream</string>
+ <string>new java.io.OutputStreamWriter java.io.OutputStream</string>
<string>new java.lang.StringBuffer</string>
<string>new java.lang.Thread java.lang.Runnable</string>
+ <string>new java.util.Base64</string>
<string>new java.util.Properties</string>
<string>staticMethod hudson.model.Hudson getInstance</string>
<string>staticMethod java.lang.Class forName java.lang.String boolean java.lang.ClassLoader</string>
<string>staticMethod java.lang.String format java.lang.String java.lang.Object[]</string>
<string>staticMethod java.lang.System getProperty java.lang.String</string>
<string>staticMethod java.lang.System getenv java.lang.String</string>
+ <string>staticMethod javax.xml.bind.DatatypeConverter printBase64Binary byte[]</string>
<string>staticMethod jenkins.model.Jenkins getInstance</string>
<string>staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods append java.io.File java.lang.Object</string>
<string>staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods execute java.lang.String</string>
<string>staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods println groovy.lang.Closure java.lang.Object</string>
<string>staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods println java.lang.Object java.lang.Object</string>
<string>staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods unique java.util.Collection groovy.lang.Closure</string>
+ <string>staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods write java.io.File java.lang.String</string>
<string>staticMethod org.codehaus.groovy.runtime.EncodingGroovyMethods encodeBase64 byte[]</string>
<string>staticMethod org.codehaus.groovy.runtime.ProcessGroovyMethods consumeProcessOutput java.lang.Process java.lang.Appendable java.lang.Appendable</string>
</approvedSignatures>
<pendingSignatures/>
<pendingClasspathEntries/>
</scriptApproval>
+
import hudson.model.*
import jenkins.model.*
import groovy.json.JsonSlurper
+import java.io.BufferedReader
+import java.io.InputStreamReader
+import java.io.OutputStreamWriter
+import java.net.URL
+import java.net.URLConnection
+
+def sendPostRequest(urlString, paramString, username, password) {
+ def url = new URL(urlString)
+ def conn = url.openConnection()
+ String userpass = username + ":" + password;
+ String basicAuth = "Basic " + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass.getBytes());
+ conn.setRequestProperty ("Authorization", basicAuth);
+ conn.setDoOutput(true)
+ def writer = new OutputStreamWriter(conn.getOutputStream())
+
+ writer.write(paramString)
+ writer.flush()
+ String line
+ def reader = new BufferedReader(new InputStreamReader(conn.getInputStream()))
+ while ((line = reader.readLine()) != null) {
+ println line
+ }
+ writer.close()
+ reader.close()
+}
def execute_command(cmd, args, verbose=false, return_stdout=false) {
if (!cmd.toString()?.trim()) {
println ec2s
+ def buildEnv = build.getEnvironment(listener)
+
// Jenkins slave nodes only for imager...
// if (worker_conf.getClass().getName() == "WorkerConf_JENKINS_IMAGER") {
println "Slave attach needed: " + worker_conf.slave_attach_needed()
println " Instance ID: ${v.instance_id}"
println " IP Address: ${v.private_ip_address}"
println " Launch Time: ${v.launch_time}"
+ myslot = ""
+ v.tags.each{ nn ->
+ if( nn['Key'] == 'slot' ) {
+ myslot = String.format("%02d", nn['Value'].toInteger())
+ }
+ }
create_slave_node(
instance = Jenkins.getInstance(),
name = "${worker_conf.name_prefix()} (${v.instance_id})",
remoteFS = "${worker_conf.remote_fs()}",
numExecutors = "${worker_conf.executors_per_slave()}",
- labelString = "${worker_conf.labels()}",
+ //labelString = "${worker_conf.labels()} ${worker_conf.labels()}-slot-${myslot}",
+ labelString = "${worker_conf.labels()}-slot-${myslot}",
sshHost = "${v.private_ip_address}",
sshPort = "${worker_conf.ssh_port()}",
sshCredentials = "${worker_conf.credential_id()}",
description = "${v.launch_time}"
)
instance.save()
+ // TODO: VM PRE CHECK
+ println " VM TESTER for ${myslot}"
+ if ( false ) {
+ File file = new File(buildEnv["WORKSPACE"] + "/IMAGER_VM_PRE_CHECK_SLOT_${myslot}.env")
+ file.write "BACKEND_SELECTION=${worker_conf.labels()}-slot-${myslot}"
+ } else {
+ def jenkins_url = buildEnv["JENKINS_URL_INTERNAL"]
+ def jenkins_job = buildEnv["VM_CHECKER_JOB_NAME"]
+ sendPostRequest("${jenkins_url}/job/${jenkins_job}/buildWithParameters", "BACKEND_SELECTION=${worker_conf.labels()}-slot-${myslot}",
+ buildEnv["JENKINS_USER"], buildEnv["JENKINS_PW"])
+
+ }
+
}
} else {
print "Skip creating slaves for " + worker_conf.getClass().getName()
for (f = 0; f < num_nodes_to_create; f++) {
println "Processing ${free_slots[f]}"
worker_conf.set_slot_number(free_slots[f])
- println worker_conf.userdata()
+ //println worker_conf.userdata()
inst_info = create_slaves(worker_conf, 1)
created_inst.add(inst_info)
}
} else {
println "Invalid action: " + action
}
+
}
__main__()