Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.toolstrek.script_endpoints
- import com.atlassian.jira.bc.issue.IssueService
- import com.atlassian.jira.component.ComponentAccessor
- import com.atlassian.jira.config.IssueTypeManager
- import com.atlassian.jira.config.PriorityManager
- import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
- import groovy.json.JsonException
- import groovy.transform.BaseScript
- import groovy.json.JsonSlurper
- import javax.ws.rs.core.MultivaluedMap
- import javax.ws.rs.core.Response
- import org.apache.log4j.Level
- import org.apache.log4j.Logger
- def log = Logger.getLogger("ru.toolstrek.script_endpoints.inline.opsgenie")
- log.setLevel(Level.DEBUG)
- def slurper = new JsonSlurper()
- def issueService = ComponentAccessor.getComponentOfType(IssueService)
- def cfField = ComponentAccessor.customFieldManager.getCustomFieldObjectsByName("Test Field").first()
- def priorityId = ComponentAccessor.getComponentOfType(PriorityManager).priorities.find { priority ->
- priority.name = "Критический"
- }.id
- def projectId = ComponentAccessor.projectManager.projects.find { project ->
- project.key == "ITFORIT"
- }.id
- def issueTypeId = ComponentAccessor.getComponentOfType(IssueTypeManager).issueTypes.find { issueType ->
- issueType.name == "Инцидент"
- }.id
- def cfManager = ComponentAccessor.customFieldManager
- def cfTinyId = cfManager.getCustomFieldObject("customfield_19610")
- def cfAlertStart = cfManager.getCustomFieldObject("customfield_19500")
- def cfAlertEnd = cfManager.getCustomFieldObject("customfield_19501")
- @BaseScript CustomEndpointDelegate delegate
- opsgenie(httpMethod: "POST", groups: ["jira-administrators"]) { MultivaluedMap queryParams, String body ->
- // Parse data
- def data
- try {
- data = slurper.parseText(body)
- } catch(JsonException ex) {
- log.error("Error parsing data from OpsGenie: ${ex}")
- return Response.serverError().build()
- }
- // Prepare data for issue creation
- def reporterKey = "admin"
- def reporter = ComponentAccessor.userManager.getUserByKey(reporterKey)
- def summary = "test summary"
- def cfValue = "test value"
- // Create new issue
- def taskIssueParameters = issueService.newIssueInputParameters()
- taskIssueParameters.setProjectId(projectId)
- .setPriorityId(priorityId)
- .setReporterId(reporterKey)
- .setIssueTypeId(issueTypeId)
- .setSummary(summary)
- .addCustomFieldValue(cfField.id, cfValue)
- def createTaskValidationResult = issueService.validateCreate(reporter, taskIssueParameters)
- if (createTaskValidationResult.isValid()) {
- def createTaskResult = issueService.create(reporter, createTaskValidationResult)
- if (!createTaskResult.isValid()) {
- log.error("Error creating issue from OpsGenie data: ${data}")
- return Response.serverError().build()
- }
- } else {
- log.error("Error validating data from OpsGenie: ${createTaskValidationResult.errorCollection}")
- return Response.serverError().build()
- }
- return Response.ok().build()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement