zoukankan      html  css  js  c++  java
  • jira:3、API 调用 (jira insight)

    config\conf.yaml
    #API Token:ODgyNjY2NDk1NzE2Oif97iBMfBu+3NnSlhKiUm9W5g8f
    #参考资料
    #https://confluence.atlassian.com/insightapps/insight-apps-1085180635.html
    #https://insight-javadoc.riada.io/insight-javadoc-8.6/insight-rest/
    #https://developer.atlassian.com/cloud/insight/rest/api-group-icon/
    #本地服务器API URL +具体路径
    #http://10.251.21.16:8080/rest/insight/1.0/
    base_Info:
        #访问的基础信息
        Url: 'http://10.251.21.16:8080/rest/insight/1.0/'
        Token: 'Bearer ODgyNjY2NDk1NzE2Oif97iBMfBu+3NnSlhKiUm9W5g8f'
        Insight_info:
            证书: [  'Name','有效期']
            网络端口: ['Name', 'Type']
            IP地址: [ 'Name','归属服务器', '归属服务分类']
            业务范围: ['Name', '描述', '环境']
            账号(人员): ['Name',  'Type', '所有者']
            运维团队: ['Name', '运维主岗', '运维备岗']
            服务器: [ 'Name', '服务器类型', '操作系统', '服务分类']
            服务域名: [ 'Name', '服务名称', 'IP地址', '证书']
            Operating System: [ 'Manufacturer', 'OS Architecture', 'Version', 'Build Number', 'Kernel', 'ServicePack Major Version', 'ServicePack Minor Version', 'Object Hash']
            员工: [ 'Name','EmployeeNumber']
            OS: ['Key', 'Name', 'Created', 'Updated']
            环境: ['Name', '描述']
            服务端口: [ 'Name','端口', '服务分类']
            服务管理: [ 'Name','描述', '许可证', '运维团队', '技术支持团队', '服务状态', '业务范围']
            License: [ 'License Key', 'Host', 'Application', 'Operating System', 'End Date', 'Object Hash']
            服务分类: [ 'Name','服务名称', '服务分类名称']
            服务依赖: [ 'Name','远程IP地址', '远程端口', '服务账号', '描述', '服务名称']
            printer: [ '打印机名称']
            账号(服务): ['Name',]
            服务商公司名称: [ 'Name',  '产品', '销售', '售前', '售后']
            IP地址分类: [ 'Name', ]
            职位(服务商): ['Name',]
            支持人员(供应商): [ 'Name', '邮箱', '手机', '所属公司', '职位']
            备份: [ 'Name','备份类型', '备份时间', '备份频率']
            服务器类型: [ 'Name',]
    
    get_All_AttributeInfo.py
    #说明:完成,用于返回所获取的字典样式
    #返回值类型  字典
    #例一
    #in:get_all_attributeInfo('ByAttribute')
    #out:{'证书': {320: '有效期'}, '网络端口': {273: 'Type'},
    #例二
    #in:get_all_attributeInfo()
    #out:{'证书': { '有效期':'320'}, '网络端口': {'Type':'273' },
    #例三
    #in:objType_type_ByID
    #out:{'证书': {320: 'label'}, '网络端口': {273: 'label'},
    
    import requests,yaml,os,json,time
    
    
    config_path = os.path.join(os.getcwd(), 'config\conf.yaml')
    with open(config_path,'rb') as f:
       conf = f.read()
    c_info=yaml.load(conf) 
    
    Token=c_info["base_Info"]["Token"]
    Init_Url=c_info["base_Info"]["Url"]
    headers = {
       "Accept": "application/json",
       "Content-Type": "application/json",
       "Authorization": Token
       }
    
    objType_Attributes_ByID={}
    objType_Attributes_ByAttribute={}
    objType_type_ByID={}
    
    
    #查询所有对象模式,每次去一个对象,有多少页就取多少次
    # objectschema/list
    url=Init_Url+r"iql/objects?page={0}&resultPerPage=1"
    test_Res = requests.request( "GET", url.format(0), headers=headers)
    total_page=json.loads(test_Res.text)["pageSize"]
    
    def get_all_attributeInfo(  ):
    	for i in range(total_page):
    		Res= json.loads(requests.request( "GET", url.format(i+1), headers=headers).text)
    		objType_Name=Res['objectEntries'][0]["objectType"]['name']
    		objType_ID=Res['objectEntries'][0]["objectType"]['id']
    		Name_ID=str(objType_Name)+'_ID'
    		if objType_Name not in objType_Attributes_ByID.keys():
    			objType_Attributes_ByID[objType_Name]={}
    			objType_Attributes_ByID[objType_Name][objType_ID]='ID'
    			objType_Attributes_ByAttribute[objType_Name]={}
    			objType_Attributes_ByAttribute[objType_Name]['ID']=objType_ID
    			# objType_Attributes_ByAttribute[objType_Name][Name_ID.upper()] =objType_ID #便于根据用户名反查用户ID信息
    			objType_type_ByID[objType_Name]={}
    
    	   #objType_Attribute 是一个字典,里面存放有关某一字段的关键信息
    		for objType_Attribute in Res['objectTypeAttributes']:
    
    			# print(objType_Attribute)
    		  #通过c_info["base_Info"]['Insight_info'] 判断对象分类是否存在,如果是存在,增将分类加入分类列表
    			if objType_Attribute['name'] in c_info["base_Info"]['Insight_info'][objType_Name]:
    				if objType_Attribute['id'] not in objType_Attributes_ByID[objType_Name].keys():
    					objType_Attributes_ByID[objType_Name][objType_Attribute['id']]=objType_Attribute['name']
    					objType_Attributes_ByAttribute[objType_Name][objType_Attribute['name']]=objType_Attribute['id']
    					if objType_Attribute['type'] ==0:
    						objType_type_ByID[objType_Name][objType_Attribute['id']]='label'
    					elif objType_Attribute['type'] ==1:
    						objType_type_ByID[objType_Name][objType_Attribute['id']]='obj'
    					elif objType_Attribute['type'] ==7:
    						objType_type_ByID[objType_Name][objType_Attribute['id']]='status'
    					else:
    						objType_type_ByID[objType_Name][objType_Attribute['id']]='unknown'
    
    
    	return(objType_Attributes_ByID,objType_Attributes_ByAttribute,objType_type_ByID)
    
    
    if __name__ == '__main__':
    	info =get_all_attributeInfo()[2]
    	print(info)
    
    
    
    jira_createObjects.py
    #说明:
    #状态:
    #返回值类型:
    #例一
    #in:  1、对象分类 ID,2、对象属性字典[{"objectTypeAttributeId":value},]
    #out:
    import requests,yaml,os,json
    config_path = os.path.join(os.getcwd(), 'config\conf.yaml')
    with open(config_path,'rb') as f:
       conf = f.read()
    c_info=yaml.load(conf) 
    from get_All_AttributeInfo import get_all_attributeInfo
    from get_objects_All import get_object_list
    
    Token=c_info["base_Info"]["Token"]
    Init_Url=c_info["base_Info"]["Url"]
    headers = {
       "Accept": "application/json",
       "Content-Type": "application/json",
       "Authorization": Token
       }
    
    url=Init_Url+"object/create"
    
    #获取对象分类的属性,并以字典的形式存在,形如 {categoryName:{categoryID:ID, categoryTypeDesc:descID}}
    
    
    objType_Attributes_ByID,objType_Attributes_ByAttribute,objType_type_ByID=get_all_attributeInfo()
    object_dick=get_object_list()
    
    def createObjects(info):
    	#判断计划创建的对象,在insight 内是否存在
    	for obj_s in object_dick.values():
    		if info['Name'].upper()==obj_s['Name'].upper():
    			print('对象{0}:{1}已经存在,停止创建'.format(info['category'],info['Name']))
    			break
    	else:
    
    		objectTypeId=	objType_Attributes_ByAttribute[info['category']]['ID']
    		attributes=[]
    		# print(objectTypeId)
    
    		for Attribute_keys in objType_Attributes_ByAttribute[info['category']].keys():
    			attribute={}
    			attribute["objectAttributeValues"]={}
    			# attribute["objectAttributeValues"].append({})
    
    
    
    
    
    			if Attribute_keys not in ['ID', 'Key',  'Created', 'Updated', ] and  not Attribute_keys.endswith('_ID'):
    
    				if info[Attribute_keys]:
    					attribute["objectTypeAttributeId"]=objType_Attributes_ByAttribute[info['category']][Attribute_keys]
    
    
    					if objType_type_ByID[ info['category']][attribute["objectTypeAttributeId"]]=='obj':
    						Name_ID=(info[Attribute_keys]).upper()
    						print(Name_ID)
    						# print(objType_Attributes_ByAttribute.items())
    						for item in object_dick.keys():
    
    							if Name_ID == object_dick[item]['Name'].upper():
    								attribute["objectAttributeValues"]=[{'value':object_dick[item]['ID']}]
    							else:
    								continue
    					else:	
    						attribute["objectAttributeValues"]=[{'value':info[Attribute_keys]}]
    					print(attribute)
    				attributes.append(attribute.copy())
    			print(attributes)
    
    		payload = json.dumps( {
    					"objectTypeId": objectTypeId,
    					"attributes":attributes,
    
    							} )
    
    
    		response = requests.request("POST",url,data=payload,headers=headers)
    
    
    		print(json.loads(response.text))
    
    if __name__ == '__main__':
    	info={'category':'账号(人员)','Name':'e05531','Type':'办公','所有者':'hans han'}
    	createObjects(info)
    
    
    
    get_fileList.py
    #说明:获取脚本所在目录下data 文件夹及其子文件夹内容,并以字典的形式返回
    #状态:完成
    #返回值类型:
    #例一
    #in:  文件所在目录
    #out:{'Q:\\专项工作\\3、资产整理\\02、数据处理脚本\\data\\e05522': ['01、固定资产表.xlsx', '02、硬件资产.xlsx', '03、软件资产.xlsx',
    import os
    file_dir=os.getcwd()
    file_dic={}
    def getFlist(file_dir):
        for root, dirs, file_list in os.walk(file_dir):
            if len(file_list)>0:
                file_dic[root]=file_list
        return file_dic
    
    if __name__ == '__main__':
    
        resDir = os.getcwd()+'\data'
        files = getFlist(resDir)
    
        print(files)
    
    read_excel.py
    #说明:获取Excel 文件内容,并返回   同时返回文件名
    #状态:完成
    #返回值类型:pandas data frame  
    #例一
    #in:  Excel 文件所在路径
    #out: dataframe 类型数据
    
    
    # 判断是否为浮点数
    def isNum2(value):
    	try:
    		x=float(value)
    		return (True)
    	except Exception as e:
    		return(False)
    
    
    import pandas as pd
    def get_content(WorkBook,WorkSheet):
    	data=pd.read_excel(WorkBook, sheet_name =WorkSheet)
    	# print(data.head())
    	return data
    
    
    get_objects_All
    #说明:获取jira Insight 内所有的对象及其关键属性, 关键属性名称维护再conf 文件内Insight_info 内
    #状态:完成,
    #返回值类型:字典
    #例一
    #in:无
    #out:{31: {'Name': 'Prd_AnyShare6_All', 'ID': 31, 'CategoryName': 'License', 'CategoryID': 11, 'End Date': '2022-02-22'}}
    
    import requests,yaml,os,json,time
    from get_All_AttributeInfo import get_all_attributeInfo
    
    config_path = os.path.join(os.getcwd(), 'config\conf.yaml')
    with open(config_path,'rb') as f:
       conf = f.read()
    c_info=yaml.load(conf) 
    
    Token=c_info["base_Info"]["Token"]
    Init_Url=c_info["base_Info"]["Url"]
    headers = {
       "Accept": "application/json",
       "Content-Type": "application/json",
       "Authorization": Token
       }
    
    All_AttributeInfo=get_all_attributeInfo()[0]
    
    #查询所有对象模式,每次去一个对象,有多少页就取多少次
    # objectschema/list
    url=Init_Url+r"iql/objects?page={0}&resultPerPage=1"
    test_Res = requests.request( "GET", url.format(0), headers=headers)
    total_page=json.loads(test_Res.text)["pageSize"]
    
    #用于查询数据,展现显示为参数:值
    def get_object_list():
    	obj_list=[]
    	obj_info={}
    	for  i in range(total_page):
    
    		Res= json.loads(requests.request( "GET", url.format(i+1), headers=headers).text)
    		
    		obj_info[Res['objectEntries'][0]['id']]={}
    		obj_info[Res['objectEntries'][0]['id']]['Name']=Res['objectEntries'][0]["label"]   #{id:{'Name':name, }}
    		obj_info[Res['objectEntries'][0]['id']]['ID']=Res['objectEntries'][0]['id']
    		obj_info[Res['objectEntries'][0]['id']]['CategoryName']=Res['objectEntries'][0]["objectType"]['name']
    		obj_info[Res['objectEntries'][0]['id']]['CategoryID']=Res['objectEntries'][0]["objectType"]['id']
    
    		objType_Name=Res['objectEntries'][0]["objectType"]['name']
    
    
    		for item_attributesInfo in Res['objectEntries'][0]["attributes"]:
    			if item_attributesInfo['objectTypeAttributeId'] in All_AttributeInfo[objType_Name].keys():
    				try:
    					# print(All_AttributeInfo[objType_Name][item_attributesInfo['objectTypeAttributeId']]+':'+item_attributesInfo['objectAttributeValues'][0]['value'])
    					obj_info[Res['objectEntries'][0]['id']][All_AttributeInfo[objType_Name][item_attributesInfo['objectTypeAttributeId']]]=item_attributesInfo['objectAttributeValues'][0]['value']
    				except Exception as e:
    					try:
    						# print(All_AttributeInfo[objType_Name][item_attributesInfo['objectTypeAttributeId']]+':'+item_attributesInfo['objectAttributeValues'][0]['referencedObject']['label'])
    						obj_info[Res['objectEntries'][0]['id']][All_AttributeInfo[objType_Name][item_attributesInfo['objectTypeAttributeId']]]=item_attributesInfo['objectAttributeValues'][0]['referencedObject']['label']
    					except Exception as d:
    						# print(All_AttributeInfo[objType_Name][item_attributesInfo['objectTypeAttributeId']]+':'+item_attributesInfo['objectAttributeValues'][0]['displayValue'])
    						obj_info[Res['objectEntries'][0]['id']][All_AttributeInfo[objType_Name][item_attributesInfo['objectTypeAttributeId']]]=item_attributesInfo['objectAttributeValues'][0]['displayValue']
    
    						# time.sleep(30)
    					# print(e)
    
    	return(obj_info)
      
    
    
    if __name__ == '__main__':
    	All_obj=get_object_list()
    	print(All_obj)
    
    
    
    get_typeAttributes.py
    #获取各个分类的属性信息 , 可用于更新conf 文件中 Insight_info
    import requests,yaml,os,json,time
    
    
    config_path = os.path.join(os.getcwd(), 'config\conf.yaml')
    with open(config_path,'rb') as f:
       conf = f.read()
    c_info=yaml.load(conf) 
    
    Token=c_info["base_Info"]["Token"]
    Init_Url=c_info["base_Info"]["Url"]
    headers = {
       "Accept": "application/json",
       "Content-Type": "application/json",
       "Authorization": Token
       }
    
    
    obj_typeAttributes={}
    
    #查询所有对象模式,每次去一个对象,有多少页就取多少次
    # objectschema/list
    url=Init_Url+r"iql/objects?page={0}&resultPerPage=1"
    test_Res = requests.request( "GET", url.format(0), headers=headers)
    total_page=json.loads(test_Res.text)["pageSize"]
    
    
    for  i in range(total_page):
       Res= json.loads(requests.request( "GET", url.format(i+1), headers=headers).text)
       obj_typeName=Res['objectEntries'][0]["objectType"]['name']
       if obj_typeName not in obj_typeAttributes.keys():
          obj_typeAttributes[obj_typeName]={}
    
       for objectTypeAttribute in Res['objectTypeAttributes']:
          # if objectTypeAttribute['name'] in c_info["base_Info"]['Insight_info'][obj_typeName]:
    
          obj_typeAttributes[obj_typeName][objectTypeAttribute['id']]=objectTypeAttribute['name']
    
    for top_key in obj_typeAttributes.keys():
       print(top_key +': '+ str(obj_typeAttributes[top_key].values()))
    
  • 相关阅读:
    npm、webpack、vue-cli 快速上手版
    jquery 显示和隐藏的三种方式
    jquery好友面板切换
    jquery 事件冒泡
    jquery QQ微博
    C# Thread 参数
    WPF Dispatcher的使用
    UVa 1600 Patrol Robot (BFS最短路 && 略不一样的vis标记)
    HDU 2795 Billboard (线段树单点更新 && 求区间最值位置)
    HDU 1394 Minimum Inversion Number (树状数组 && 规律 && 逆序数)
  • 原文地址:https://www.cnblogs.com/vmsky/p/15722943.html
Copyright © 2011-2022 走看看