A seguir, há um arquivo Python de exemplo para sua referência. 

#O arquivo de script cria um chamado no JIRA quando uma solicitação é criada com o Tipo de Solicitação como 'Bug' e o Impacto como 'High'. O ID da solicitação, assunto, descrição, prazo e prioridade da solicitação são enviados ao JIRA para a criação do chamado. Após a criação bem-sucedida do chamado no JIRA, o ID do chamado do JIRA e a URL do chamado são obtidos da resposta para serem adicionados como uma nota na solicitação do ServiceDesk Plus. Os campos personalizados 'JIRA_ISSUE_ID' e 'JIRA_ISSUE_URL' também são atualizados com os valores correspondentes.

 

#Requisitos - Módulo Requests deve estar instalado

#A ser configurado pelo usuário: url, jirausername, jirapassword, Jira_Server, Port_Number

#Comando - 'py CreateJiraTicket.py $COMPLETE_JSON_FILE'

import requests

import sys

import json

import datetime

#Para abrir e acessar o arquivo json

file_Path = sys.argv[1]

with open(file_Path) as data_file:

 

data = json.load(data_file)

#Obtendo os valores necessários

request_obj = data['request']

workorderid = request_obj['WORKORDERID']

subject = request_obj['SUBJECT']

desc = request_obj['SHORTDESCRIPTION']

priority = request_obj['PRIORITY']

duebytime = request_obj['DUEBYTIME']

#Transformar o horário de milissegundos para formato de data

duebydate = datetime.datetime.fromtimestamp(int(duebytime) / 1e3).strftime('%d %b %Y, %H:%M:%S')

 

#Criando o objeto json a ser fornecido como entrada para a chamada de API

jsonData ='''{

    "fields": {

    "summary": "'''+subject+'''",

    "description": "'''+desc+'''",

        "issuetype": {

            "name": "BUG"

        },

        "project": {

            "key": "ServiceDesk Plus issues"

        },

        "duedate": "'''+duebydate+'''",

        "priority": {

            "name": "'''+priority+'''"

        },

        "customfield_10003": "'''+workorderid+'''"

    }

}'''

 

jirausername = 'jirausername'

jirapassword = 'jirapassword'

 

string = username + ":" + password

stringbytes = bytes(string,"utf-8")

 

base64string = base64.b64encode(stringbytes)

base64string = base64string.decode("utf-8")

 

 

#Especificando os cabeçalhos HTTP necessários para enviar a chamada de API

headers = ''' {

        "X-Version" : "1",

        'Content-Type':'application/json',

        "Accept" : "application/json",

        "Authorization" : "Basic " + base64string

    }'''

 

 

#Construindo a URL para a chamada de API e enviando-a ao servidor Jira

 

with requests.Session() as s:

    url = "[Jira_Server]:[Port_Number]/rest/api/2/issue/"

    r = s.post(url,verify=True, data=jsonData,headers=headers)

 

#Se a chamada retornar sucesso, crie uma nota e atualize os campos personalizados

if(r.status_code == 202):

responseobj=r.json()

 

jiraissueid = responseobj['id']

jiraissueurl = responseobj['self']

 

note={}

note["notestext"] = "Solicitação Jira criada com ID: "+jiraissueid+"</br> Link da Issue:  "+jiraissueurl

 

noteObject={}

noteObject["notes"]=note

 

addNoteJson={}

addNoteJson['INPUT_DATA']=[]

addNoteJson['INPUT_DATA'].append(noteObject)

addNoteJson["OPERATIONNAME"]="ADD_NOTE"

 

updateReqArray={}

updateReqArray['JIRA_ISSUE_ID']=jiraissueid

updateReqArray['JIRA_ISSUE_URL']=jiraissueurl

 

updateFieldsJson={"INPUT_DATA":[]}

updateFieldsJson['INPUT_DATA'].append(updateReqArray)

updateFieldsJson["OPERATIONNAME"]="EDIT_REQUEST"

 

resultjson={}

resultjson["result"] = "success"

resultjson["message"] = "Uma solicitação Jira foi criada. Uma nota com o ID da Issue e a URL foi adicionada."

resultjson["operation"] = []

resultjson["operation"].append(addNoteJson)

resultjson["operation"].append(updateFieldsJson)

 

 

#Retornando o JSON

 

 

print(resultjson)

else:

print("Problema ao enviar a solicitação")

  print(r.json())

 

Confiável pelas melhores organizações do mundo

Suporte mais rápido e fácil, juntos