Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

List jira node information with scriptrunner

Qi Jiang July 13, 2017

I have 3 nodes currently host Jira, Is there any way I can use scriptrunner to list all these nodes informationi?

1 comment

Comment

Log in or Sign up to comment
Ivan Punko January 17, 2018

Hey @Qi Jiang! Are information still needed?

If yes you are welcome - https://github.com/Punkoivan/JiraScripts/blob/master/getClusterManager.groovy

 

This script returns to your ClusterManager Object, which has a lot of methods - Atlassian documentation for the class.

I believe that getAllNodes() and then iterating over - what are you looking for.

 

Regards,

Ivan Punko

Bryan Karsh September 12, 2018

Hey Ivan -- Do you have any examples of calling this object? I can't get it to work in Jira's script runner for example.

Bryan Karsh September 12, 2018

 

This seems to get me the info I want in Script Runner (still playing with it -- but the raw data of the nodes and their state get returned) 

 

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.cluster.ClusterManager

def componentAccessor = ComponentAccessor.newInstance()
def clusterManager = componentAccessor.getOSGiComponentInstanceOfType(ClusterManager.class)
def clusterInfo = clusterManager.getAllNodes()
Bryan Karsh September 12, 2018

And this will get the same info via rest endpoint. Just add '/rest/scriptrunner/latest/custom/getClusterStatus' to the end of your base url.  It may need some polish -- it works, but I am not super strong in java/groovy.

 

import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import groovy.json.JsonBuilder
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.cluster.ClusterManager

import groovy.transform.BaseScript

import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response

def componentAccessor = ComponentAccessor.newInstance()
def clusterManager = componentAccessor.getOSGiComponentInstanceOfType(ClusterManager.class)
Set clusterInfo = clusterManager.getAllNodes()

@BaseScript CustomEndpointDelegate delegate

getSessionCount(httpMethod: "GET") { MultivaluedMap queryParams, String body ->
return Response.ok(new JsonBuilder([clusterInfo]).toString()).build();
}

 

Documentation can be found at the Adaptavist site here: https://scriptrunner.adaptavist.com/latest/jira/rest-endpoints.html

TAGS
AUG Leaders

Atlassian Community Events