>
> we use Go but you can use curl or any HTTP client, it is something like 
> this
>
> JENKINS_CRUMB=$(curl --silent 
> "$JENKINS_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,\":\",//crumb)")
> curl --silent -X POST -H "${JENKINS_CRUMB}" -F "script=<script.groovy" 
> ${JENKINS_URL}/scriptText
>  
>

Interesting, thanks!
We use jenkins-cli, more or less like this:

cat script.groovy | java -jar ./jenkins-cli.jar -ssh -user userID -i 
key_rsa -s "${server}" groovy =  >> output.xml

Probably based on an old approach. I'll switch it with curl...
 

yep, this data should be in the API, probably it is a matter of adding an 
> annotation in the Class
>  
>

Indeed, the data is there, it seems that an *@Exported* annotation would do 
it:

https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/model/Queue.java#L2155

I'm not sure about the implications though.

Anyway, I would like to get the Label because I need to know in advance 
whether I should connect a node to that Master or not. But I forgot the 
fact that the Label can be a regular expression, and that kind of kills my 
purpose because I would then need to resolve the expression also in 
advance. And replicating the Jenkins mechanism for that wouldn't be so wise 
in the long term.

I tried to use the method 
*Jenkins.instance.queue.countBuildableItemsFor(Label)* to ask Jenkins 
itself to check that for me, but that didn't work for me as I expected...

For example, I triggered a build that requests the expression "myLabelA || 
myLabelB". Then I programmatically created a Label that would match that. 
Yet, Jenkins couldn't match it for some reason:

import hudson.model.labels.*

Jenkins.instance.queue.items.each {
  println ">> Label expression from the pending build:"
  def labelFromQueueJob = it.getAssignedLabel()
  println "Type: " + labelFromQueueJob.class
  println "Expression: " + labelFromQueueJob
  println ">> countBuildableItemsFor " + labelFromQueueJob + " : " + Jenkins
.instance.queue.countBuildableItemsFor(labelFromQueueJob)
}

println "\n>> Artificially created Label expression:"
LabelExpression artificialLabelExp = new LabelExpression.Or(new LabelAtom(
"myLabelA"),new LabelAtom("myLabelB"))
println "Type: " + artificialLabelExp.class
println "Expression: " + artificialLabelExp
println ">> countBuildableItemsFor " + artificialLabelExp + " : " + Jenkins.
instance.queue.countBuildableItemsFor(artificialLabelExp)

Output:

>> Label expression from the pending build:
Type: class hudson.model.labels.LabelExpression$Or
Expression: myLabelA||myLabelB
>> countBuildableItemsFor myLabelA||myLabelB : 1

>> Artificially created Label expression:
Type: class hudson.model.labels.LabelExpression$Or
Expression: myLabelA||myLabelB
>> countBuildableItemsFor myLabelA||myLabelB : 0


No questions left. I'm glad that you pointed out that curl solution. I've 
certainly overlook it!

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/64dc6461-704b-41a0-a7db-53d61657b444%40googlegroups.com.

Reply via email to