#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.
#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')
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")
headers = ''' {
"X-Version" : "1",
'Content-Type':'application/json',
"Accept" : "application/json",
"Authorization" : "Basic " + base64string
}'''
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)
print(resultjson)
else:
print("Problema ao enviar a solicitação")
print(r.json())









