自定义脚本 - V3 API

 

你需要会使用下面两个编程语言:

  • JSON 
  • Python

自定义脚本文件结构

  1. 导入所需安装包
  2. 获取输入参数
  3. 实施逻辑
  4. 返回JSON

常用安装包

安装包

作用

Sys

获取输入参数

json

处理JSON数据

requests

调用API

datetime

将时间从毫秒转换为所需的日期格式

 

获取输入参数

使用sys.argv[索引]可以获取脚本文件中的参数,其中的索引从1到通过的参数。

当该通过的参数为$COMPLETE_V3_JSON_FILE 时(到包含请求和Diff JSON的路径), JSON文件通过使用如下代码段可读:

file_Path = sys.argv[1]
with open(file_Path) as data_file:
data = json.load(data_file)

 

实施逻辑

用于调用API的代码段:

with requests.Session() as s:
url = 'api_url'
r = s.post(url,verify=True, data=post_data,headers=headers)

按要求构建 api_url, post_data 和 headers 。

以下代码段用于将时间从毫秒转换为所需的日期格式:

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

 

构建返回JSON

例如{"key":"value"}的JSON样本可以构建如下:

json = {}

json["key"] = "value"

print(json)

 

例如[{"key":"value"}]的JSON组可以构建如下:

json = {}

json["key"] = "value"

result = []

result.append(json)

print(result)

 

 

使用脚本中的返回JSON可以执行一些操作。了解使用返回JSON执行的操作请点击 这里

 

下面是一个JSON架构示例,可以更新请求的附加字段JIRA_ISSUE_ID & JIRA_ISSUE_URL 并为其添加注释。

 

更新请求的附加字段
 

import requests
import sys
import json,os
resultjson={}
resultjson["operation"] = []
resultjson["result"]="success"
message = "Sample Python script for update request"
resultjson["message"]=message
operationJson={"INPUT_DATA":[]}
operationJson["OPERATIONNAME"]="UPDATE"
operationJson["FORMAT"]="V3"
updateReqArray_field={}
updateReqArray_field['udf_sline_2101']="123"
updateReqArray_field['udf_sline_1803']="abcd"
updateReqArray={}
updateReqArray['udf_fields']=updateReqArray_field
updateReq={}
updateReq['request']=updateReqArray
operationJson['INPUT_DATA'].append(updateReq)
resultjson['operation'].append(operationJson)
print(resultjson)

添加注释

import sys
import json

resultjson={}

message = "Sample Python script for adding note using v3 API"
resultjson["operation"] = []
resultjson["result"]="success"
operationJson={"INPUT_DATA":[]}
operationJson["OPERATIONNAME"]="ADD_NOTE"
operationJson["FORMAT"]="V3"

requestNoteDetails={}
requestNoteDetails['description']="Jira Request Created"
requestNoteDetails['show_to_requester']="false"
requestNoteDetails['notify_technician']="true"
requestNoteDetails['mark_first_response']="false"
requestNoteDetails['add_to_linked_requests']="true"
requestNote={}
requestNote['request_note']=requestNoteDetails

resultjson["message"]=message
operationJson['INPUT_DATA'].append(requestNote)
resultjson['operation'].append(operationJson)

print(resultjson)

 

支持的参数—$COMPLETE_V3_JSON_FILE

$COMPLETE_V3_JSON_FILE 它表示一个文件的路径,该文件包含完整的JSON格式的请求细节、过往的字段值以及更新字段值。该文件是临时的,在脚本执行后自动删除。

该临时的JSON文件被创建于 SDP_Home\integration\custom_scripts\request\ 目录下, 文件名为 <requestid_timestamp>.json.

 

$COMPLETE_V3_JSON_FILE 架构 

{
  "request": {
    <all request properties in V3 format>
  },
  "diff": {
    "old": {
      "request": {
        "priority": {
          "id": "4",
          "name": "High"
        },
        "urgency": {
          "id": "3",
          "name": "Normal"
        },
        "impact_details": "High impact for servers"
      }
    },
    "new": {
      "request": {
        "priority": {
          "id": "1",
          "name": "Low"
        },
        "urgency": {
          "id": "4",
          "name": "Low"
        },
        "impact_details": "Low impact for servers"
      }
    }
  },
  "LOGIN_NAME": "administrator",
  "LOGGEDIN_USER_TYPE": "Technician",
  "LOGGEDIN_USER_NAME": "administrator",
  "OPERATION_TYPE": "add"
}

 

提供给$COMPLETE_V3_JSON_FILE 临时文件的输入JSON

输入 的是JSON. 在这里,请求密钥包含V3 API 格式的所有字段,除了解决方案,首次响应时间,首次截止时间和SLA。

 

输入字段中的其他信息:

  1. LOGIN_NAME 
  2. LOGGEDIN_USER_NAME 
  3. LOGIN_USER_ID 
  4. LOGGEDIN_USER_TYPE
  5. OPERATION_TYPE

 

输出自定义字段的JSON 格式

请求字段的脚本应返回一个JSON,该JSON包含失败/成功的状态,以及一条信息,该信息将显示在请求的历史标签里。

一般格式:

{

  "result": "success",

  "message": "Message"

}
  • 结果表示动作的成功或失败状态。
  • 信息将显示在请求的历史标签中。

 

服务器脚本必须将输出JSON(如果有的话)写到相同的提供给该脚本的临时文件夹。禁止调用外部API调用来更新相同请求,因为这将阻止更新后的值传递到业务规则。

 

$COMPLETE_V3_JSON_FILE

 

$COMPLETE_V3_JSON_FILE 表示包含$COMPLETE_JSON 和 $DIFF_JSON的文件的文件路径放在一个JSON中。不向类/脚本传递过多的参数,而是通过文件路径,脚本可以打开文件并访问所需的值。

该文件是临时创建的,并在脚本执行后删除。

该临时JSON文件被创建于SDP_Home\integration\custom_scripts\request\ 目录下, 文件名为 <requestid_timestamp>.json.

Back to Top