diff options
Diffstat (limited to 'keyword/objects')
| -rw-r--r-- | keyword/objects/application.robot | 55 | ||||
| -rw-r--r-- | keyword/objects/ip.yaml | 22 | ||||
| -rw-r--r-- | keyword/objects/ip_objects.robot | 176 | ||||
| -rw-r--r-- | keyword/objects/manage_object_body.robot | 378 | ||||
| -rw-r--r-- | keyword/objects/object.robot | 513 | ||||
| -rw-r--r-- | keyword/objects/process_object_body.robot | 562 |
6 files changed, 1706 insertions, 0 deletions
diff --git a/keyword/objects/application.robot b/keyword/objects/application.robot new file mode 100644 index 0000000..43e2c6d --- /dev/null +++ b/keyword/objects/application.robot @@ -0,0 +1,55 @@ +*** Settings ***
+Library Collections
+Library RequestsLibrary
+Resource ../../variable/common_variable.txt
+#Resource functional_keywords.robot
+Library Collections
+Resource ../common/common.robot
+#Library ../../../04-CustomLibrary/Library/fileOperations.py
+
+*** Variables ***
+${applicationUrl} /application
+${signatureUrl} /application/signatures
+*** Keywords ***
+AddSignature
+ [Arguments] ${signaturereqbody}
+ [Documentation] 新增Signature,返回Signature ID
+ ${response} BasePostRequestForV2 ${signatureUrl} ${signaturereqbody} ${version}
+ ${rescode} Set Variable ${response['code']}
+ ${signatureId} Set Variable ${response['data']['signatures'][0]['signatureId']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${signatureId}
+AddApplication
+ [Arguments] ${appreqbody}
+ [Documentation] 新增Application,返回APPIDObject
+ ${response} BasePostRequestForV2 ${applicationUrl} ${appreqbody} ${version}
+ ${rescode} Set Variable ${response['code']}
+ ${appids} Set Variable ${response['data']['appObj']['appId']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${appids}
+GetAppIdObjects
+ [Arguments] ${appids}
+ [Documentation] 通过APPID查询Application,返回APPIDObject
+ ${response} BaseFormRequest ${applicationUrl} appIds=${appids} ${version}
+ ${rescode} Set Variable ${response['code']}
+ ${appidobject} Set Variable ${response['data']['list'][0]['objectId']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${appidobject}
+
+DeleteApplicationByIds
+ [Arguments] ${appids}
+ #删除Application
+ ${response} BaseDeleteRequest /${version}/application {"appIds":[${appids}]}
+ ${response_code} Get From Dictionary ${response} code
+ Should Be Equal As Strings ${response_code} 200
+ ${response} Convert to String ${response}
+ log ${response}
+
+DeleteSignatureByIds
+ [Arguments] ${signatureId}
+ #删除Signature
+ ${response} BaseDeleteRequest /${version}/application/signatures {"signatureIds":[${signatureId}]}
+ ${response_code} Get From Dictionary ${response} code
+ Should Be Equal As Strings ${response_code} 200
+ ${response} Convert to String ${response}
+ log ${response}
diff --git a/keyword/objects/ip.yaml b/keyword/objects/ip.yaml new file mode 100644 index 0000000..0cfc271 --- /dev/null +++ b/keyword/objects/ip.yaml @@ -0,0 +1,22 @@ +#yaml在线格式化:https://www.bejson.com/validators/yaml_editor/
+"ip_secuirty_allow_dns_001":
+ "opAction": "add"
+ "returnData": 1
+ "objectList":
+ "objectType": "ip"
+ "objectSubType": "endpoint"
+ "isValid": 1
+ "isInitialize": 0
+ "isExclusion": 0
+ "objectName": "dxytest"
+ "objectDesc": "test"
+ "subObjectIds":
+ "addItemList":
+ "ip": "192.168.50.19"
+ "port": "1-65535"
+ "itemId":
+ "isSession": "endpoint"
+ "updateItemList":
+ "deleteItemIds":
+ "iconColor": "#31739C"
+
diff --git a/keyword/objects/ip_objects.robot b/keyword/objects/ip_objects.robot new file mode 100644 index 0000000..19a4b55 --- /dev/null +++ b/keyword/objects/ip_objects.robot @@ -0,0 +1,176 @@ +*** Settings ***
+Library yaml
+Resource ../../../variable/common_variable.txt
+Resource object.robot
+Resource ../../common/common.robot
+Library Collections
+Library json
+Library String
+#Resource ip.yaml
+*** Variables ***
+${objectUrl} /policy/object
+${objectids} ${EMPTY}
+
+*** Keywords ***
+AllowDns001ObjectV4
+ [Tags]
+ [Arguments] ${filepath} ${filename} ${keywords}
+ Comment 参数 ${filepath}读取文件路径 ${filename}读取文件名 ${keywords}获取数据关键字
+ Comment 创建IP
+ #yaml在线格式化:https://www.bejson.com/validators/yaml_editor/
+ ${YAML}= Get File ${filepath}${/}${filename}
+ ${LOADED}= yaml.Safe Load ${YAML}
+ ${ip_secuirty_allow_dns_001} Get From Dictionary ${LOADED} ${keywords}
+ ${retkeys} evaluate [one for one in ${ip_secuirty_allow_dns_001}]
+ ${dictType} = Evaluate type(${retkeys})
+ ${returnData} Get From Dictionary ${ip_secuirty_allow_dns_001} returnData
+ ${bodyJson} json.Dumps ${ip_secuirty_allow_dns_001}
+
+ #Set To Dictionary ${LOADED}[patch_id_bw_data][pronghornResponseBody][responseBody][0][value][0] value=200
+ #${addItemList1} Create Dictionary isSession=endpoint ip=${testClentIP} port=0-65535 direction=0 protocol=0 isInitialize=0
+ #${addItemLists} Create list ${addItemList1}
+ #${objectDict} Create Dictionary objectType=ip objectSubType=endpoint isValid=${1} addItemList=${addItemLists}
+ #${rescode} ${objectId} AddObjects ${1} ${objectDict}
+ #${objectids} set Variable ${objectId}
+
+ ${response} BasePostRequestForV2 ${objectUrl} ${bodyJson} ${version}
+ ${objectIds} Run Keyword If "${returnData}" == "1" GetObjectIds ${response}
+ ... ELSE Create List
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${rescode} ${objectIds}
+
+IpObject
+ [Tags]
+ [Arguments] ${filepath} ${filename} ${keywords}
+ Comment 参数 ${filepath}读取文件路径 ${filename}读取文件名 ${keywords}获取数据关键字
+ Comment 创建IP
+ #yaml在线格式化:https://www.bejson.com/validators/yaml_editor/
+ ${YAML}= Get File ${filepath}${/}${filename}
+ ${LOADED}= yaml.Safe Load ${YAML}
+ ${ipList} Get From Dictionary ${LOADED} ${keywords}
+ ${rescode} ${objectIds} IpRequest ${ipList}
+ [Return] ${rescode} ${objectIds}
+
+BatchCreateIps
+ [Tags]
+ [Arguments] ${filepath} ${filename} ${keywords}
+ Comment 参数 ${filepath}读取文件路径 ${filename}读取文件名 ${keywords}获取数据关键字
+ Comment 创建IP
+ #yaml在线格式化:https://www.bejson.com/validators/yaml_editor/
+ ${YAML}= Get File ${filepath}${/}${filename}
+ ${LOADED}= yaml.Safe Load ${YAML}
+ ${ipList} Get From Dictionary ${LOADED} ${keywords}
+ ${ipListType} = Evaluate type(${ipList})
+ #${retkeys} evaluate [one for one in ${ipList}]
+ #${dictType} = Evaluate type(${retkeys})
+ ${objectIds} Run Keyword If "${ipListType}" == "<class 'list'>" IpObjectBatch ${ipList}
+ ... ELSE Set Variable ${EMPTY}
+ ${ipListType} = Evaluate type(${objectIds})
+ ${json} json.Dumps ${objectIds} ensure_ascii=False
+ ${json} = Replace String ${json} ["", [
+ ${objectIds} json.loads ${json}
+ [Return] ${objectIds}
+
+IpObjectBatch
+ [Tags]
+ [Arguments] ${objDictList}
+ Comment 参数${objDictList}多个象字典列表
+ Comment 创建IP
+ ${objids} Create List ${EMPTY}
+ ${ipListType} = Evaluate type(${objDictList})
+ FOR ${objDict} IN @{objDictList}
+ ${rescode} ${objectIds} CreateObject ${objDict}
+ AppendListToList ${objids} ${objectIds}
+ END
+ [Return] ${objids}
+
+
+#####################################################################################################################
+
+OrangeFilter
+ [Documentation] filer对象处理,把一个filter的list处理为一个filter
+ #[Arguments] ${filterList} ${objectList}
+ [Arguments] ${objectList}
+ ${list} Create List ${objectList}
+ ${filter} Create Dictionary filter=${list}
+ #${filterList} Append To List ${filter}
+ [Return] ${filter}
+
+CreateObjectList
+ [Documentation] 处理对象
+ [Arguments] ${objectData}
+ Comment 针对位置进行处理
+ ${protocolField} Get From Dictionary ${objectData} protocolField
+ #${objList} Get From Dictionary ${objectData} objList
+
+ ${objectIds} ${objectList} CreateObjects ${objectData}
+ ${objectList} Run Keyword If "${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN" Set Variable ${objectList}
+ ##############destination
+ ... ELSE IF "${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN" Set Variable ${objectList}
+ #filter
+ ... ELSE OrangeFilter ${objectList}
+ [Return] ${objectIds} ${objectList}
+CreateObjects
+ [Documentation] 处理对象
+ [Arguments] ${objectData}
+ Comment 针对位置进行处理
+ #${YAML}= Get File ${path}/data/mode.yaml
+ #${LOADED}= yaml.Safe Load ${YAML}
+ #${ipMode} Get From Dictionary ${LOADED} ip_batch_mode
+ ${protocolField} Get From Dictionary ${objectData} protocolField
+ ${objList} Get From Dictionary ${objectData} objList
+
+ Comment ${objJson}对象模板取自全局变量
+ ${objJson} Set Variable ${objModeJson}
+ ${objectJson} Set Variable ${objListMode}
+ #JSON处理
+ ${return} ${objectType} Run Keyword And Ignore Error Get From Dictionary ${objectData} objectType
+ ${objectJson} = Run Keyword If "${return}"!="FAIL" and "${objectType}" != "None" Replace String ${objectJson} "objectType": "ip" "objectType":"${objectType}"
+ ... ELSE Set Variable ${objectJson}
+ ${return} ${objectSubType} Run Keyword And Ignore Error Get From Dictionary ${objectData} objectSubType
+ #${objectSubType} Run Keyword If "${return}"!="FAIL" Set Variable ${objectSubType} ELSE Set Variable ${EMPTY}
+ ${objectJson} = Run Keyword If "${return}"!="FAIL" and "${objectSubType}" != "None" Replace String ${objectJson} "objectSubType": "endpoint" "objectSubType":"${objectSubType}"
+ ... ELSE Set Variable ${objectJson}
+ ${return} ${objectId} Run Keyword And Ignore Error Get From Dictionary ${objectData} objectId
+ ${objectJson} = Run Keyword If "${return}"!="FAIL" and "${objectId}" != "None" Replace String ${objectJson} "objectId": null "objectId":${objectId}
+ ... ELSE Set Variable ${objectJson}
+ ${objectJson} = Run Keyword If "${return}"!="FAIL" and "${objectId}" != "None" Replace String ${objectJson} "opAction": "add" "option": "update"
+ ... ELSE Set Variable ${objectJson}
+ #${objectId} Run Keyword If "${return}"!="FAIL" Set Variable ${objectId} ELSE Set Variable ${EMPTY}
+ #JSON处理
+ ${objectJsonList} Create List
+ ${objListType} = Evaluate type(${objList})
+ FOR ${obj} IN @{objList}
+ ${return} ${addItemList} Run Keyword And Ignore Error Get From Dictionary ${obj} addItemList
+ #${objectJson} Convert To String ${objectJson}
+ #${addItemList} Convert To String ${addItemList}
+ #${objectJson} josn.loads ${objectJson}
+ ${addItemList} json.Dumps ${addItemList}
+ #${objectJson} = Replace String ${objectJson} "addItemList": "addItemList":${itemList}
+ ${addItemList} = Run Keyword If "${return}"!="FAIL" and "${objectSubType}" == "ip_learning" Replace String ${addItemList} [{" "
+ ... ELSE Set Variable ${addItemList}
+ ${addItemList} = Run Keyword If "${return}"!="FAIL" and "${objectSubType}" == "ip_learning" Replace String ${addItemList} "}] "
+ ... ELSE Set Variable ${addItemList}
+ ${objectJson} = Run Keyword If "${return}"!="FAIL" and "${objectSubType}" == "ip_learning" Replace String ${objectJson} "addItemList": [null] "addItemList": [], ${addItemList}
+ ... ELSE IF "${return}"!="FAIL" Replace String ${objectJson} "addItemList": [null] "addItemList": ${addItemList}
+ ... ELSE Set Variable ${objectJson}
+ ${objectJson} = Replace String ${objectJson} [null] []
+ #提交接口返回id拼接
+
+ #Create File ${path}/test.txt ${objectJson}
+ #Append To File ${path}/test.txt ${objectJson}
+ ${objDictionary} json.loads ${objectJson}
+ AppendListToList ${objectJsonList} ${objDictionary}
+ END
+ ${objectData} Create Dictionary opAction=add returnData=1 objectList=${objectJsonList}
+ ${rescode} ${objectIds} createObject ${objectData}
+ Should Be Equal As Strings ${rescode} 200
+
+ ${protocolField} Run Keyword If "${protocolField}" != "None" Set Variable ${protocolField}
+ ${objectsList} Create List
+ FOR ${obj} IN @{objectIds}
+ ${objectList} Create Dictionary objectId=${objectIds}[0] protocolField=${protocolField}
+ Append To List ${objectsList} ${objectList}
+ END
+ [Return] ${objectIds} ${objectList}
diff --git a/keyword/objects/manage_object_body.robot b/keyword/objects/manage_object_body.robot new file mode 100644 index 0000000..dc57ae4 --- /dev/null +++ b/keyword/objects/manage_object_body.robot @@ -0,0 +1,378 @@ +*** Settings ***
+Library json
+Library Collections
+Resource ../../variable/common_variable.txt
+Resource ../../variable/policy_object_default.txt
+Resource Object.robot
+
+*** Keywords ***
+ObjectParamsOpertion
+ [Documentation]
+ ... 描述:入口,opAction参数固定为'add'
+ ... 其它参数默认值见/03-Variable/PolicyObjectDefault.txt
+
+ [Arguments] ${returnData} ${objectList} ${opAction}
+ ${emptyList} Create List
+ ${returnDict} Create Dictionary
+ # 断言必传参数
+ # Should Not Be Empty ${objectList}[objectType]
+ # Set To Dictionary ${returnDict} objectType=${objectList}[objectType]
+ Should Not Be Empty ${objectList}[addItemList]
+ # 取可选参数,为传入设置默认值
+ ${return} ${objectType} Run Keyword And Ignore Error Set Variable ${objectList}[objectType]
+ ${objectTypeV} Run Keyword If "${return}"!="FAIL" and "${objectType}"!="${EMPTY}" Evaluate '${objectType}'.lower()
+ ... ELSE Evaluate '${Default_ObjectType}'.lower()
+ Set To Dictionary ${objectList} objectType=${objectTypeV}
+ Set To Dictionary ${returnDict} objectType=${objectTypeV}
+ ${return} ${objectSubType} Run Keyword And Ignore Error Set Variable ${objectList}[objectSubType]
+ Run Keyword If "${return}"!="FAIL" and "${objectSubType}"!="${EMPTY}" Set To Dictionary ${returnDict} objectSubType=${objectSubType}
+ ... ELSE Set To Dictionary ${returnDict} objectSubType=${Default_ObjectSubType}
+ ${return} ${isValid} Run Keyword And Ignore Error Set Variable ${objectList}[isValid]
+ Run Keyword If "${return}"=="FAIL" or "${isValid}"=="${EMPTY}" Set To Dictionary ${returnDict} isValid=${Default_IsValid}
+ ... ELSE Set To Dictionary ${returnDict} isValid=${isValid}
+ ${return} ${isInitialize} Run Keyword And Ignore Error Set Variable ${objectList}[isInitialize]
+ Run Keyword If "${return}"=="FAIL" or "${isInitialize}"=="${EMPTY}" Set To Dictionary ${returnDict} isInitialize=${Default_IsInitialize}
+ ... ELSE Set To Dictionary ${returnDict} isInitialize=${isInitialize}
+ ${return} ${isExclusion} Run Keyword And Ignore Error Set Variable ${objectList}[isExclusion]
+ Run Keyword If "${return}"=="FAIL" or "${isExclusion}"=="${EMPTY}" Set To Dictionary ${returnDict} isExclusion=${Default_IsExclusion}
+ ... ELSE Set To Dictionary ${returnDict} isExclusion=${isExclusion}
+ ${return} ${objectName} Run Keyword And Ignore Error Set Variable ${objectList}[objectName]
+ Run Keyword If "${return}"=="FAIL" or "${objectName}"=="${EMPTY}" Set To Dictionary ${returnDict} objectName=${Default_ObjectName}
+ ... ELSE Set To Dictionary ${returnDict} objectName=${objectName}
+ ${return} ${objectDesc} Run Keyword And Ignore Error Set Variable ${objectList}[objectDesc]
+ Run Keyword If "${return}"!="FAIL" and "${objectDesc}"!="${EMPTY}" Set To Dictionary ${returnDict} objectDesc=${objectDesc}
+ ... ELSE Set To Dictionary ${returnDict} objectDesc=${Default_ObjectDesc}
+ ${return} ${subObjectIds} Run Keyword And Ignore Error Set Variable ${objectList}[subObjectIds]
+ ${subObjectIdsV} Run Keyword If "${return}"!="FAIL" and "${subObjectIds}"!="${EMPTY}" and "${subObjectIds}"!="${None}" Evaluate list(map(int, re.split('[,]', '${subObjectIds}'))) re
+ ... ELSE Set Variable ${emptyList}
+ ${return} ${objectId} Run Keyword And Ignore Error Set Variable ${objectList}[objectId]
+ Run Keyword If "${return}"=="FAIL" or "${objectId}"=="${EMPTY}" Set To Dictionary ${returnDict} objectId=${EMPTY}
+ ... ELSE Set To Dictionary ${returnDict} objectId=${objectId}
+ Set To Dictionary ${returnDict} subObjectIds=${subObjectIdsV}
+
+ # 处理AddItemList
+ ManageAddItemList ${objectList} ${returnDict}
+
+ # 转为json结构并返回
+ ${dict} Create Dictionary opAction=${opAction} returnData=${returnData} objectList=${returnDict}
+ ${json} json.Dumps ${dict} ensure_ascii=False
+ Log Object_Request_Body-${json}
+ [Return] ${json}
+
+ManageAddItemList
+ # 处理addItemList数组
+ [Arguments] ${objectList} ${returnDict}
+ ${itemList} Run Keyword If '${objectList}[objectType]'=='ip' ManageIpItemList ${objectList}[addItemList]
+ ... ELSE IF '${objectList}[objectType]'=='http_signature' ManageStrItemList ${objectList}[addItemList] ${True}
+ ... ELSE ManageStrItemList ${objectList}[addItemList] ${False}
+ Set To Dictionary ${returnDict} addItemList=${itemList}
+
+ManageIpItemList
+ # 处理IP对象
+ [Arguments] ${str}
+ ${returnList} Create List
+ # ${list} Evaluate re.split('[,]', '${str}') re
+ log ${str}
+ FOR ${var} IN @{str}
+ # Continue For Loop If '${var}' == '${EMPTY}'
+ # 区分入参的类型,分别处理
+ Append To List ${returnList} ${var}
+ END
+ [Return] ${returnList}
+
+ManageStrItemList
+ # 处理除IP外其它字符串对象
+ [Arguments] ${str} ${flag}
+ ${returnList} Create List
+ ${list} Evaluate re.split('[,]', '${str}') re
+ FOR ${var} IN @{list}
+ Continue For Loop If '${var}' == '${EMPTY}'
+ ${obj} AnalysisStrItem ${var} ${flag}
+ Append To List ${returnList} ${obj}
+ END
+ [Return] ${returnList}
+IpItemType11
+ [Arguments] ${str}
+ ${obj} Create Dictionary
+ ${values} Evaluate re.split('[|]', '${str}') re
+ ${isSession} Convert To Integer ${values}[0]
+ ${ip} Convert To Integer ${values}[1]
+ ${port} Convert To Integer ${values}[2]
+ ${direction} Convert To Integer ${values}[3]
+ ${protocol} Convert To Integer ${values}[4]
+ ${return} ${isInitialize} Run Keyword And Ignore Error Convert To Integer ${list}[${index+1}]
+ Run Keyword If "${return}"!="FAIL" and "${isInitialize}"!="${EMPTY}" Set To Dictionary ${obj} isInitialize=${isInitialize}
+IpItemType1
+ # IP类型1:4|0|0|endpoint#range|192.168.40.1|192.168.40.50|80/88&range|192.168.40.1|192.168.40.50|80/88|1|itemName|itemDesc,...
+ [Arguments] ${str}
+ ${obj} Create Dictionary
+ ${left} Evaluate '${str}'[0:'${str}'.find('#')]
+ ${right} Evaluate '${str}'['${str}'.find('#')+1:]
+ ${values} Evaluate re.split('[|]', '${left}') re
+ ${addrType} Convert To Integer ${values}[0]
+ ${protocol} Convert To Integer ${values}[1]
+ ${direction} Convert To Integer ${values}[2]
+ Set To Dictionary ${obj} addrType=${addrType} protocol=${protocol} direction=${direction} isSession=${values}[3]
+
+ ${cfgs} Evaluate re.split('[&]', '${right}') re
+ ${client} Set Variable ${cfgs}[0]
+ ${server} Set Variable ${cfgs}[1]
+
+ ${cValues} Evaluate re.split('[|]', '${client}') re
+ ${sValues} Evaluate re.split('[|]', '${server}') re
+ ${clientPort1} Evaluate int(re.split('[/]', '${cValues}[3]')[0]) re
+ ${clientPort2} Evaluate int(re.split('[/]', '${cValues}[3]')[1]) re
+ ${serverPort1} Evaluate int(re.split('[/]', '${sValues}[3]')[0]) re
+ ${serverPort2} Evaluate int(re.split('[/]', '${sValues}[3]')[1]) re
+ Set To Dictionary ${obj} clientIpFormat=${cValues}[0] clientIp1=${cValues}[1] clientIp2=${cValues}[2] clientPortFormat=range clientPort1=${clientPort1} clientPort2=${clientPort2}
+ Set To Dictionary ${obj} serverIpFormat=${sValues}[0] serverIp1=${sValues}[1] serverIp2=${sValues}[2] serverPortFormat=range serverPort1=${serverPort1} serverPort2=${serverPort2}
+
+ OtherParams ${sValues} ${obj}
+ [Return] ${obj}
+
+IpItemType2
+ # IP类型2:4|0|0|endpoint#range|192.168.40.1|192.168.40.50|80/88|1|itemName|itemDesc,...
+ [Arguments] ${str}
+ ${obj} Create Dictionary
+ ${left} Evaluate '${str}'[0:'${str}'.find('#')]
+ ${client} Evaluate '${str}'['${str}'.find('#')+1:]
+ ${values} Evaluate re.split('[|]', '${left}') re
+ ${addrType} Convert To Integer ${values}[0]
+ ${protocol} Convert To Integer ${values}[1]
+ ${direction} Convert To Integer ${values}[2]
+ Set To Dictionary ${obj} addrType=${addrType} protocol=${protocol} direction=${direction} isSession=${values}[3]
+
+ ${cValues} Evaluate re.split('[|]', '${client}') re
+ ${clientPort1} Evaluate int(re.split('[/]', '${cValues}[3]')[0]) re
+ ${clientPort2} Evaluate int(re.split('[/]', '${cValues}[3]')[1]) re
+ Set To Dictionary ${obj} clientIpFormat=${cValues}[0] clientIp1=${cValues}[1] clientIp2=${cValues}[2] clientPortFormat=range clientPort1=${clientPort1} clientPort2=${clientPort2}
+ # 设置默认值
+ Set To Dictionary ${obj} serverIpFormat=range serverIp1= serverIp2= serverPortFormat=range serverPort1=${0} serverPort2=${0}
+ OtherParams ${cValues} ${obj}
+ [Return] ${obj}
+
+IpItemType3
+ # IP类型3:range|192.168.40.1|192.168.40.50|80/88&range|192.168.40.1|192.168.40.50|80/88|1|itemName|itemDesc,...
+ [Arguments] ${str}
+ ${obj} Create Dictionary
+ # 设置默认值
+ Run Keyword If ':' in '${str}' Set To Dictionary ${obj} addrType=${6}
+ ... ELSE Set To Dictionary ${obj} addrType=${Default_AddItem_AddrType}
+ Set To Dictionary ${obj} protocol=${Default_AddItem_Protocol} direction=${Default_AddItem_Direction} isSession=${Default_AddItem_IsSession}
+
+ ${cfgs} Evaluate re.split('[&]', '${str}') re
+ ${client} Set Variable ${cfgs}[0]
+ ${server} Set Variable ${cfgs}[1]
+
+ ${cValues} Evaluate re.split('[|]', '${client}') re
+ ${sValues} Evaluate re.split('[|]', '${server}') re
+ ${clientPort1} Evaluate int(re.split('[/]', '${cValues}[3]')[0]) re
+ ${clientPort2} Evaluate int(re.split('[/]', '${cValues}[3]')[1]) re
+ ${serverPort1} Evaluate int(re.split('[/]', '${sValues}[3]')[0]) re
+ ${serverPort2} Evaluate int(re.split('[/]', '${sValues}[3]')[1]) re
+ Set To Dictionary ${obj} clientIpFormat=${cValues}[0] clientIp1=${cValues}[1] clientIp2=${cValues}[2] clientPortFormat=range clientPort1=${clientPort1} clientPort2=${clientPort2}
+ Set To Dictionary ${obj} serverIpFormat=${sValues}[0] serverIp1=${sValues}[1] serverIp2=${sValues}[2] serverPortFormat=range serverPort1=${serverPort1} serverPort2=${serverPort2}
+
+ OtherParams ${sValues} ${obj}
+ [Return] ${obj}
+
+IpItemType4
+ # IP类型4:range|192.168.40.1|192.168.40.50|80/88|1|itemName|itemDesc,...
+ [Arguments] ${str}
+ ${obj} Create Dictionary
+ # 设置默认值
+ Run Keyword If ':' in '${str}' Set To Dictionary ${obj} addrType=${6}
+ ... ELSE Set To Dictionary ${obj} addrType=${4}
+ Set To Dictionary ${obj} protocol=${0} direction=${0} isSession=endpoint
+
+ ${cValues} Evaluate re.split('[|]', '${str}') re
+ ${clientPort1} Evaluate int(re.split('[/]', '${cValues}[3]')[0]) re
+ ${clientPort2} Evaluate int(re.split('[/]', '${cValues}[3]')[1]) re
+ Set To Dictionary ${obj} clientIpFormat=${cValues}[0] clientIp1=${cValues}[1] clientIp2=${cValues}[2] clientPortFormat=range clientPort1=${clientPort1} clientPort2=${clientPort2}
+ # 设置默认值
+ Set To Dictionary ${obj} serverIpFormat=range serverIp1= serverIp2= serverPortFormat=range serverPort1=${0} serverPort2=${0}
+
+ OtherParams ${cValues} ${obj}
+ [Return] ${obj}
+
+AnalysisStrItem
+ [Arguments] ${str} ${flag}
+ ${obj} Create Dictionary
+ ${list} Evaluate re.split('[|]', '${str}') re
+ # keywordArray
+ ${keywords} KeywordsForEach ${list}[0]
+ Set To Dictionary ${obj} keywordArray=${keywords}
+ # district
+ Run Keyword If '${flag}'=='${True}' Set To Dictionary ${obj} district=${list}[1]
+ ${index} Run Keyword If '${flag}'=='${True}' Set Variable ${2}
+ ... ELSE Set Variable ${1}
+ # isHexbin
+ ${return} ${isHexBin} Run Keyword And Ignore Error Convert To Integer ${list}[${index}]
+ Run Keyword If "${return}"!="FAIL" and "${isHexBin}"!="${EMPTY}" Set To Dictionary ${obj} isHexbin=${isHexBin}
+ ... ELSE Set To Dictionary ${obj} isHexbin=${0}
+
+ # isInitialize、itemName、itemDesc
+ ${return} ${isInitialize} Run Keyword And Ignore Error Convert To Integer ${list}[${index+1}]
+ Run Keyword If "${return}"!="FAIL" and "${isInitialize}"!="${EMPTY}" Set To Dictionary ${obj} isInitialize=${isInitialize}
+ ${return} ${itemName} Run Keyword And Ignore Error Set Variable ${list}[${index+2}]
+ Run Keyword If "${return}"!="FAIL" and "${itemName}"!="${EMPTY}" Set To Dictionary ${obj} itemName=${itemName}
+ ${return} ${itemDesc} Run Keyword And Ignore Error Set Variable ${list}[${index+3}]
+ Run Keyword If "${return}"!="FAIL" and "${itemDesc}"!="${EMPTY}" Set To Dictionary ${obj} itemDesc=${itemDesc}
+ [Return] ${obj}
+
+KeywordsForEach
+ # 处理多关键字keyword1&keyword2&...
+ [Arguments] ${str}
+ ${returnList} Create List
+ ${list} Evaluate re.split('[&]', '${str}') re
+ FOR ${var} IN @{list}
+ Append To List ${returnList} ${var}
+ END
+ [Return] ${returnList}
+
+OtherParams
+ [Documentation]
+ ... 处理isInitialize、itemName、itemDesc参数
+ [Arguments] ${values} ${obj}
+ ${return} ${isInitialize} Run Keyword And Ignore Error Convert To Integer ${values}[4]
+ Run Keyword If "${return}"!="FAIL" and "${isInitialize}"!="${EMPTY}" Set To Dictionary ${obj} isInitialize=${isInitialize}
+ ${return} ${itemName} Run Keyword And Ignore Error Set Variable ${values}[5]
+ Run Keyword If "${return}"!="FAIL" and "${itemName}"!="${EMPTY}" Set To Dictionary ${obj} itemName=${itemName}
+ ${return} ${itemDesc} Run Keyword And Ignore Error Set Variable ${values}[6]
+ Run Keyword If "${return}"!="FAIL" and "${itemDesc}"!="${EMPTY}" Set To Dictionary ${obj} itemDesc=${itemDesc}
+
+WanVpn
+ [Arguments] ${wanvpnlist}
+ ${data} Set Variable "opAction":"add","returnData":1
+ ${dict}= Evaluate eval ('{${data}}')
+ ${data2} set to dictionary ${dict} list=${wanvpnlist}
+ ${json} json.Dumps ${data2} ensure_ascii=False
+ [Return] ${json}
+
+IpList
+ [Arguments] ${Iplist}
+ ${list} Create List
+ FOR ${k} ${v} IN ENUMERATE @{Iplist}
+ Append To List ${list} ${v}
+ END
+ ${list2} Set Variable ${list}[2]
+ ${list3} Set Variable ${list}[3]
+ ${link_id} evaluate int(${Iplist}[${list2}])
+ ${src_mac} evaluate int(${Iplist}[${list3}])
+ ${list_info} Create Dictionary ${list}[2]=${link_id} ${list}[3]=${src_mac}
+ ${Ip_list} Create Dictionary ip=${Iplist}[ip] relative_location=${Iplist}[relative_location] link_info=${list_info}
+ log 123213213213213123
+ log ${Ip_list}
+ # log ${link_info}
+ [Return] ${Ip_list}
+WanNatIpPood
+ [Arguments] ${must_parameter} ${wan_nat_ip_iplist}
+ # 编写iplist json格式
+ ${wan_nat_ip_iplist} Create Dictionary profileId=${must_parameter}[profileId] profileName=${must_parameter}[profileName] ipList=${wan_nat_ip_iplist} isValid=1
+ #编写二层list内地格式
+ ${wan_nat_ip_list} Create List ${wan_nat_ip_iplist}
+ # 判断sjon是用于修改还是新增
+ ${opAction} run keyword if '${must_parameter}[profileId]'=="" Set Variable add
+ ... ELSE Set Variable update
+ #编写最外面的格式
+ ${returnData} evaluate int(1)
+ ${wan_nat_ip_pood_data} Create Dictionary opAction=${opAction} returnData=${returnData} list=${wan_nat_ip_list}
+ # 返回请求json
+ log ${wan_nat_ip_pood_data}
+ ${json} json.Dumps ${wan_nat_ip_pood_data} ensure_ascii=False
+ log ${json}
+ [Return] ${json}
+
+
+Index
+ [Arguments] ${list} ${value}
+ ${index} evaluate int(0)
+ ${1} evaluate int(1)
+ FOR ${a} IN @{list}
+ #${a} Set Variable ${a}
+ log ${a}
+ ${index} run Keyword if '${a}'=='${value}' log ${index}
+ ... ELSE Evaluate ${index}+${1}
+ log ${a}
+ END
+
+abcd
+ [Arguments] ${effectiveRange_list} ${DataCenter}
+ ${ab} create list
+ FOR ${a} IN @{DataCenter}
+ ${i} index ${effectiveRange_list} ${a}
+ Append To List ${ab} ${i}
+ END
+ [Return] ${ab}
+
+IspJson
+ [Arguments] ${isp_json}
+ ${1} Create List ${isp_json}
+ [Return] ${1}
+
+LocationJson
+ [Arguments] ${location_json}
+ ${2} Create List ${location_json}
+ [Return] ${2}
+
+LoccationAndIspJson
+ [Arguments] ${location_json} ${isp_json}
+ ${3} Create List ${location_json} ${isp_json}
+ [Return] ${3}
+
+
+
+PacketCapture
+ [Arguments] ${PacketCapturedata} ${DataCenter}
+ # 构建effectiveRange_tsg_sets
+ ${effectiveRange_list_manu} Create List Almaty
+ ${DataCenter_length} = Get Length ${DataCenter}
+ # ${isp_length} = Get Length ${isp}
+
+ ${DataCenter_ids} run keyword if ${DataCenter_length}==0 abcd ${effectiveRange_list_manu} ${DataCenter}
+ ... ELSE abcd ${effectiveRange_list_manu} ${DataCenter}
+ log ${DataCenter_ids}
+ ${DataCenter_json} Create Dictionary tag=data_center value=${DataCenter} ids=${DataCenter_ids}
+
+ # ${isp_ids} run keyword if ${isp_length}==0 abcd ${effectiveRange_list_manu} ${isp}
+ # ... ELSE abcd ${effectiveRange_list_manu} ${isp}
+ # log ${isp}
+ # ${isp_json} Create Dictionary tag=isp value=${isp} ids=${isp_ids}
+
+ ${tag_sets_2} Create List ${DataCenter_json}
+ ${tag_sets} Create List ${tag_sets_2}
+ ${effectiveRange} Create Dictionary tag_sets=${tag_sets}
+ # 编写iplist json格式
+ log ${PacketCapturedata}
+ # 构建PolicyList
+ ${addrType} evaluate int(${PacketCapturedata}[addrType])
+ ${protocol} evaluate int(${PacketCapturedata}[protocol])
+ ${second} Set Variable ${3600}
+ ${captureDuration1} evaluate int(${PacketCapturedata}[captureDuration])
+ ${captureDuration} evaluate ${captureDuration1}*${second}
+ log ${captureDuration}
+ ${policyListDict} Create Dictionary
+ ... policyId=${PacketCapturedata}[policyId]
+ ... policyName=${PacketCapturedata}[policyName]
+ ... addrType=${addrType}
+ ... protocol=${protocol}
+ ... clientIp=${PacketCapturedata}[clientIp]
+ ... clientPort=${PacketCapturedata}[clientPort]
+ ... serverIp=${PacketCapturedata}[serverIp]
+ ... serverPort=${PacketCapturedata}[serverPort]
+ ... maxPacket=${PacketCapturedata}[maxPacket]
+ ... captureDuration=${captureDuration}
+ ... effectiveRange=${effectiveRange}
+ log ${policyListDict}
+ ${policyList} Create List ${policyListDict}
+ # 判断json是用于修改还是新增
+ ${opAction} run keyword if '${PacketCapturedata}[policyId]'=="" Set Variable add
+ ... ELSE Set Variable update
+ #编写最外面的格式
+ ${returnData} evaluate int(1)
+ ${PacketCapture} Create Dictionary opAction=${opAction} returnData=${returnData} policyList=${policyList}
+ # 返回请求json
+ log ${PacketCapture}
+ ${json} json.Dumps ${PacketCapture} ensure_ascii=False
+ log 111111111111${json}
+ [Return] ${json}
\ No newline at end of file diff --git a/keyword/objects/object.robot b/keyword/objects/object.robot new file mode 100644 index 0000000..2ae994a --- /dev/null +++ b/keyword/objects/object.robot @@ -0,0 +1,513 @@ +*** Settings ***
+Library Collections
+Library RequestsLibrary
+Resource ../../variable/common_variable.txt
+Resource ../common/functional_keywords.robot
+Resource process_object_body.robot
+Library Collections
+Resource ../common/common.robot
+#Library ../../../04-CustomLibrary/Library/fileOperations.py
+Library DatabaseLibrary
+
+*** Variables ***
+${objectUrl} /policy/object
+${categoryUrl} /category/dict
+${applicationDictUrl} /application/update/dict
+${fileUploaduRL} /system/feature/update/
+
+*** Keywords ***
+AddLocalIPObject
+ #创建对象IP
+ log to_AddLocalIPObject
+ Comment 创建IP
+ #object为IP→endpoint时的addItemList单个对象
+ ${addItemList1} Create Dictionary isSession=endpoint ip=${testClentIP} port=0-65535 direction=0 protocol=0 isInitialize=0
+ #可以添加多个
+ ${addItemLists} Create list ${addItemList1}
+ #objectList对象
+ ${objectDict} Create Dictionary objectType=ip objectSubType=endpoint isValid=${1} addItemList=${addItemLists}
+ ${rescode} ${objectId1} AddObjects ${1} ${objectDict}
+ SET GLOBAL VARIABLE ${testClentID} ${objectId1}
+ Comment 创建SubId
+ log to_AddLocalSubidObject
+ #可以添加多个
+ ${addItemList1} Create Dictionary keywordArray=${testSubscriberID} isHexbin=${0}
+ ${addItemLists} Create list ${addItemList1}
+ ${objectDict} Create Dictionary objectType=subscriberid objectSubType=subscriberid objectName=autotest_localSubId_${testSubscriberID} isValid=${1} addItemList=${addItemLists}
+ ${rescode} ${subiid} AddObjects ${1} ${objectDict}
+ #log ${subiid}
+ log LocalSubIP:${subiid}
+ SET GLOBAL VARIABLE ${testClentSubID} ${subiid}
+ Comment 创建mobile_identity-imsi
+ ${addItemList1} Create Dictionary keywordArray=${imsi} isHexbin=${0}
+ ${addItemLists} Create list ${addItemList1}
+ ${objectDict} Create Dictionary objectType=mobile_identity objectSubType=imsi isValid=${1} addItemList=${addItemLists}
+ ${rescode} ${imsi_id} AddObjects ${1} ${objectDict}
+ InsertObjectIdToFile global_imsi_id ${imsi_id}
+ SET GLOBAL VARIABLE ${object_imsi_id} ${imsi_id}
+ Comment 创建mobile_identity-phone_number
+ ${addItemList1} Create Dictionary keywordArray=${phone_number1} isHexbin=${0}
+ ${addItemList2} Create Dictionary keywordArray=${phone_number2} isHexbin=${0}
+ ${addItemList3} Create Dictionary keywordArray=${phone_number3} isHexbin=${0}
+ ${addItemList4} Create Dictionary keywordArray=${phone_number4} isHexbin=${0}
+ ${addItemLists} Create list ${addItemList1} ${addItemList2} ${addItemList3} ${addItemList4}
+ ${objectDict} Create Dictionary objectType=mobile_identity objectSubType=phone_number isValid=${1} addItemList=${addItemLists}
+ ${rescode} ${phoneNum_id} AddObjects ${1} ${objectDict}
+ InsertObjectIdToFile global_phoneNum_id ${imsi_id}
+ SET GLOBAL VARIABLE ${obj_phoneNum_Id} ${phoneNum_id}
+ Comment 创建apn
+ ${addItemList1} Create Dictionary keywordArray=${apn1} isHexbin=${0}
+ ${addItemList2} Create Dictionary keywordArray=${apn2} isHexbin=${0}
+ ${addItemLists} Create list ${addItemList1} ${addItemList2}
+ ${objectDict} Create Dictionary objectType=apn objectSubType=apn isValid=${1} addItemList=${addItemLists}
+ ${rescode} ${apn_id} AddObjects ${1} ${objectDict}
+ InsertObjectIdToFile global_apn_id ${imsi_id}
+ SET GLOBAL VARIABLE ${obj_apn_Id} ${apn_id}
+
+AddObjects
+ [Arguments] ${returnData} ${objectList}
+ [Documentation] 新增策略对象
+ ... objectList,策略对象,可为list类型与dict类型
+ ... addItemList自动过滤itemId
+ ... updateItemList自动过滤isInitialize(update时该字段引发异常)
+ ... ipItem格式为dict,自动过滤空的字段
+ ... stringItem格式为dict,需要注意keywordArray字段应传入逗号分隔的字符串eg: keyword1,keyword2
+ ... http_signature为代表的拓展关键字keywordArray字段也是以逗号分隔的
+ ... returnData,是否返回数据,固定为1
+ ${returnData}= Run Keyword If '${returnData}' == '${EMPTY}' Set Variable 1
+ ... ELSE Set Variable ${returnData}
+ #必选参数判定
+ Should Not Be Empty ${objectList}
+ ${dictType} = Evaluate type(${objectList})
+ ${body} Run Keyword If "${dictType}" == "<class 'list'>" ObjectListOperation ${returnData} ${objectList} add
+ ... ELSE IF "${dictType}" == "<class 'dict'>" ObjectOperation ${returnData} ${objectList} add
+ ... ELSE Set Variable ${EMPTY}
+ ${response} BasePostRequestForV2 ${objectUrl} ${body} ${version}
+ ${objectIds} Run Keyword If "${returnData}" == "1" GetObjectIds ${response}
+ ... ELSE Create List
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${rescode} ${objectIds}
+
+UpdateObjects
+ [Arguments] ${returnData} ${objectList} ${opAction}
+ [Documentation] 更新策略对象
+ ... objectList,策略对象,可为list类型与dict类型
+ ... addItemList自动过滤itemId
+ ... updateItemList自动过滤isInitialize(update时该字段引发异常)
+ ... ipItem格式为dict,自动过滤空的字段
+ ... stringItem格式为dict,需要注意keywordArray字段应传入逗号分隔的字符串eg: keyword1,keyword2
+ ... http_signature为代表的拓展关键字keywordArray字段也是以逗号分隔的
+ ... returnData,是否返回数据,固定为1
+ ... opAction,可为update,enable,disable
+ ${returnData}= Run Keyword If '${returnData}' == '${EMPTY}' Set Variable 1
+ ... ELSE Set Variable ${returnData}
+ #必选参数判定
+ Should Not Be Empty ${objectList}
+ ${dictType} = Evaluate type(${objectList})
+ ${body} Run Keyword If "${dictType}" == "<class 'list'>" ObjectListOperation ${returnData} ${objectList} ${opAction}
+ ... ELSE IF "${dictType}" == "<class 'dict'>" ObjectOperation ${returnData} ${objectList} ${opAction}
+ ... ELSE Set Variable ${EMPTY}
+ ${response} BaseEditRequestForV2 ${objectUrl} ${body} ${version}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${rescode}
+
+UpdateInstall
+ [Arguments] ${updateDict}
+ [Documentation] 更新策略对象
+ ... objectList,策略对象,可为list类型与dict类型
+ ... addItemList自动过滤itemId
+ ... updateItemList自动过滤isInitialize(update时该字段引发异常)
+ ... ipItem格式为dict,自动过滤空的字段
+ ... stringItem格式为dict,需要注意keywordArray字段应传入逗号分隔的字符串eg: keyword1,keyword2
+ ... http_signature为代表的拓展关键字keywordArray字段也是以逗号分隔的
+ ... returnData,是否返回数据,固定为1
+ ... opAction,可为update,enable,disable
+ #必选参数判定
+ Should Not Be Empty ${updateDict}
+ ${bodyJson} json.Dumps ${updateDict} ensure_ascii=False
+ ${response} BaseEditRequestForV2 ${fileUploaduRL} ${body} ${version}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${rescode}
+
+GetObjectItems
+ [Arguments] ${params}
+ [Documentation] 获取策略对象中的item,策略对象单元
+ ... 当updateItemList中有需要传入数据时
+ ... 调用此关键字
+ #必选参数判定
+ Should Not Be Empty ${params}
+ ${paramsStr} DictionaryToQueryParams ${params}
+ ${response} BaseFormRequest /policy/items ${paramsStr} ${version}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ ${data} Set Variable ${response['data']}
+ ${itemIds} Create List
+ FOR ${item} IN @{data['list']}
+ Append To List ${itemIds} ${item['itemId']}
+ END
+ [Return] ${rescode} ${itemIds} ${data['list']}
+
+GetObjectItems1
+ [Arguments] ${params}
+ [Documentation] 获取策略对象中的item,策略对象单元
+ ... 当updateItemList中有需要传入数据时
+ ... 调用此关键字
+ #必选参数判定
+ Should Not Be Empty ${params}
+ ${paramsStr} DictionaryToQueryParams ${params}
+ ${response} BaseFormRequest /policy/items ${paramsStr} ${version}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ ${data} Set Variable ${response['data']}
+ [Return] ${rescode} ${data}
+
+DeleteObjectByIds
+ [Arguments] ${objectIds}
+ [Documentation] 删除策略对象
+ ... params,传入的删除字典
+ ... 结构为[1,2,3]
+ ${type} Evaluate isinstance(${objectIds},list)
+ Should Be True ${type}
+ ${dict} Create Dictionary objectIds=${objectIds}
+ ${json} json.Dumps ${dict} ensure_ascii=False
+ ${response} BaseDeleteRequest /${version}${objectUrl} ${json}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${rescode}
+
+ImportObject
+ [Arguments] ${filePath} ${fileName} ${objectType} ${objectSubType} ${objectName}
+ [Documentation] 策略对象导入
+ ... filePath文件路径
+ ... fileName文件名称
+ ... objectType对象类型
+ ... objectSubType对象子类型
+ ... objectName对象名称
+ ... jira CHON-12导入限制需求支持
+ Directory Should Exist ${path}
+ File Should Exist ${path}/${filePath}/${fileName}
+ File Should Not Be Empty ${path}/${filePath}/${fileName}
+ ${size} Get File Size ${path}/${filePath}/${fileName}
+ Should Not Be Empty ${objectType}
+ #获取Item 的总数
+ ${total} GetItemNum ${objectType} ${objectSubType}
+ #获取导入文件中的总行数
+ #${lines} CountLines ${path}/${filePath}/${fileName}
+ ${lines} CountLines ${path}/${filePath}/${fileName}
+ #总数超过一定数据量测试不通过
+ ${total1} Evaluate ${total}+${lines}
+ #链接数据库查询上限
+ Connect To Database Using Custom Params pymysql ${mysqlHost}
+ ${objectLimit} query SELECT cfg_value FROM t_sys_cfg WHERE cfg_name='${objectType}_upper_limit'
+ ${objectLimit} Set Variable ${objectLimit[0][0]}
+ ${remaining} Evaluate ${objectLimit}-${total}
+ log ${objectType}剩余可导入量为:${remaining}
+ ${testType} Evaluate type($objectLimit)
+ Disconnect From Database
+ #jira CHON-12导入限制需求支持
+ Run Keyword If "${objectType}"=="url" and ${total1}>${objectLimit} log 当前已经存在item个数${total},待导入个数${lines},总数超过${objectLimit}条!
+ ... ELSE IF ${total1}>${objectLimit} log 当前已经存在item个数${total},待导入个数${lines},总数超过${objectLimit}条!
+ ${objectSubType} Run Keyword If "${objectType}"=="ip" and "${objectSubType}"=="${EMPTY}" Set Variable endpoint
+ ... ELSE Set Variable ${objectSubType}
+ ${subfix} Fetch From Right ${fileName} .
+ ${binFile} Run Keyword If "${subfix}"=="txt" Evaluate (r'${fileName}',open(r"${path}/${filePath}/${fileName}",'rb'),'text/plain')
+ ... ELSE IF "${subfix}"=="csv" Evaluate (r'${fileName}',open(r"${path}/${filePath}/${fileName}",'rb'),'application/vnd.ms-excel')
+ ... ELSE ${EMPTY}
+ ${data} Create Dictionary objectType=${objectType}
+ Run Keyword If "${objectSubType}"!="${EMPTY}" Set To Dictionary ${data} objectSubType=${objectSubType}
+ Run Keyword If "${objectName}"!="${EMPTY}" Set To Dictionary ${data} objectName=${objectName}
+ ${file} Create Dictionary file=${binFile}
+ ${response} BaseMultipartPostRequest ${objectUrl}/batch ${data} ${file} ${version}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${rescode} ${objectType} ${response}
+
+ImportApplication
+ [Arguments] ${filePath} ${fileName} ${feature} ${code}
+ [Documentation] 策略对象导入
+ ... filePath文件路径
+ ... fileName文件名称
+ ... feature是特征
+ Directory Should Exist ${path}
+ File Should Exist ${path}/${filePath}/${fileName}
+ File Should Not Be Empty ${path}/${filePath}/${fileName}
+ ${size} Get File Size ${path}/${filePath}/${fileName}
+ ${binFile} Run Keyword If "${feature}"=="${EMPTY}" Evaluate (r'${fileName}',open(r"${path}/${filePath}/${fileName}",'rb'),'application/xml')
+ ... ELSE IF "${feature}"=="app_library" or "${feature}"=="app_signature" Evaluate (r'${fileName}',open(r"${path}/${filePath}/${fileName}",'rb'),'application/octet-stream')
+ ... ELSE ${EMPTY}
+ ${file} Create Dictionary file=${binFile}
+ # ${response} BaseMultipartPostRequest ${objectUrl}/batch ${EMPTY} ${file} ${version}
+ ${response} Run Keyword If "${feature}"=="${EMPTY}" BaseMultipartPostRequest ${applicationDictUrl} ${EMPTY} ${file} ${version}
+ ... ELSE IF "${feature}"=="app_library" or "${feature}"=="app_signature" BaseMultipartPostRequest ${fileUploaduRL} ${EMPTY} ${file} ${version}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} ${code}
+
+
+ExportObject
+ [Arguments] ${objectType} ${objectSubType} ${objectIds} ${objectName}
+ [Documentation] 策略对象导出
+ ... objectType ip,url等
+ ... objectSubType 子类型
+ ... objectIds 1,2,3
+ ... objectName 字符串
+ Should Not Be Empty ${objectType}
+ ${params} Create Dictionary objectType=${objectType}
+ Run Keyword If "${objectSubType}"!="${EMPTY}" Set To Dictionary ${params} objectSubType=${objectSubType}
+ Run Keyword If "${objectIds}"!="${EMPTY}" Set To Dictionary ${params} objectIds=${objectIds}
+ Run Keyword If "${objectName}"!="${EMPTY}" Set To Dictionary ${params} objectName=${objectName}
+ ${response} BaseGetRequestReturnBinary ${objectUrl}/batch ${params} ${version}
+ [Return] ${response}
+
+GetItemNum
+ [Arguments] ${objectType} ${objectSubType}
+ [Documentation] 获取策略对象单元总数
+ ${getTotal} Create Dictionary pageNo=${1} pageSize=${1}
+ Run Keyword If "${objectType}"=="ip" and "${objectSubType}"=="endpoint" Set To Dictionary ${getTotal} itemType=IP
+ ... ELSE IF "${objectType}"=="ip" and "${objectSubType}"=="geo_location" Set To Dictionary ${getTotal} itemType=geo_location
+ ... ELSE IF "${objectType}"=="ip" and "${objectSubType}"=="as_number" Set To Dictionary ${getTotal} itemType=as_number
+ ... ELSE IF "${objectType}"=="url" Set To Dictionary ${getTotal} itemType=URL
+ ... ELSE Set To Dictionary ${getTotal} itemType=${objectType}
+ ${rescode} ${data} GetObjectItems1 ${getTotal}
+ ${total} Set Variable ${data['total']}
+ Run Keyword If "${objectType}"=="fqdn_category" Set To Dictionary ${getTotal} isInitialize=1
+ ${rescode} ${data} Run Keyword If "${objectType}"=="fqdn_category" GetObjectItems1 ${getTotal}
+ ... ELSE Set Variable ${rescode} ${data}
+ ${total} Run Keyword If "${objectType}"=="fqdn_category" Evaluate ${total} - ${data['total']}
+ ... ELSE Set Variable ${total}
+ [Return] ${total}
+
+CountLines1
+ [Arguments] ${file}
+ [Documentation] 获取文件总行数
+ ${count} Set Variable ${0}
+ ${openFile} Evaluate enumerate(open(r"${file}",'r'))
+ FOR ${line} IN @{openFile}
+ ${val} Run Keyword If "${line[0]}"=="0" Set Variable ${line[1]}
+ ... ELSE Set Variable ${EMPTY}
+ ${val2} Run Keyword If "${line[1]}"=="\n" Set Variable ${line[0]}
+ ... ELSE Set Variable ${EMPTY}
+ log ${line}
+ log "${line[1]}"
+ ${match} Get Regexp Matches ${val} ^-->
+ #${match2} Get Regexp Matches ${val} ^(\t)*$\n
+ ${len} Get Length ${match}
+ #${len2} Get Length ${match2}
+ ${count} Run Keyword If "${line[0]}"=="0" and ${len}>0 Set Variable ${count}
+ ... ELSE Evaluate ${count}+1
+ END
+ [Return] ${count}
+
+PolicProtocolFields
+ [Arguments] ${policyType} ${protocol} ${objectType}
+ [Documentation] 策略对象生效协议字段查询
+ ... policyType策略类型
+ ... protocol协议
+ ... objectType对象类型
+ ${dict} Create Dictionary
+ Run Keyword If "${policyType}"!="${EMPTY}" Set To Dictionary ${dict} policyType=${policyType}
+ Run Keyword If "${protocol}"!="${EMPTY}" Set To Dictionary ${dict} protocol=${protocol}
+ Run Keyword If "${objectType}"!="${EMPTY}" Set To Dictionary ${dict} objectType=${objectType}
+ ${parmStr} DictionaryToQueryParams ${dict}
+ ${response} BaseFormRequest ${objectUrl}/protocolFields ${parmStr} ${version}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${response['data']}
+
+ObjectReference
+ [Arguments] ${objectId}
+ [Documentation] 策略对象相关性查询
+ ${response} BaseFormRequest ${objectUrl}/reference objectId=${objectId} ${version}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${response['data']}
+
+AppIdTreeSearch
+ [Arguments] ${referenceObjectId}
+ [Documentation] App ID对象树查询
+ ${response} BaseFormRequest ${objectUrl}/appId/tree referenceObjectId=${referenceObjectId} ${version}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+ [Return] ${response['data']}
+
+AddCategories
+ [Arguments] ${returnData} ${categoryList} ${opAction} ${testCode}=null
+ [Documentation] 新增Category
+ ... returnData,是否返回数据,固定为1
+ Comment 此处思路给category单独的另一套关键字,原因:地址与json串名称与Object部分不同了
+ ${returnData}= Run Keyword If '${returnData}' == '${EMPTY}' Set Variable 1
+ ... ELSE Set Variable ${returnData}
+ #必选参数判定
+ Should Not Be Empty ${categoryList}
+ ${dictType} = Evaluate type(${categoryList})
+ ${body} Run Keyword If "${dictType}" == "<class 'list'>" CategoryListOperation ${returnData} ${categoryList} ${opAction}
+ ... ELSE IF "${dictType}" == "<class 'dict'>" CategoryOperation ${returnData} ${categoryList} ${opAction}
+ ... ELSE Set Variable ${EMPTY}
+
+ log ${body}
+ # ${response} BasePostRequestForV2 ${categoryUrl} ${body} ${version}
+ ${response} Run Keyword If "${opAction}"=="add" BasePostRequestForV2 ${categoryUrl} ${body} ${version}
+ ... ELSE IF "${opAction}"=="update" BaseEditRequestForV2 ${categoryUrl} ${body} ${version}
+ ${CategoryObjIds} Run Keyword If "${returnData}" == "1" and ${testCode} == 200 and "${opAction}"=="add" GetCategoryObjIds ${response}
+ ... ELSE Set Variable ${EMPTY}
+ ${CategoryIds} Run Keyword If "${returnData}" == "1" and ${testCode} == 200 and "${opAction}"=="add" GetCategoryIds ${response}
+ ... ELSE Set Variable ${EMPTY}
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} ${testCode}
+ [Return] ${rescode} ${CategoryObjIds} ${CategoryIds}
+
+QueryUpadateRecord
+ [Arguments] ${body} ${code}
+ ${response} BaseGetRequestOK /${version}/system/feature/update body=${body}
+ log ${response}
+ ${rescode} Set Variable ${response['code']}
+ Shoule Be Equal As Strings ${rescode} ${code}
+ [Return] ${rescode}
+
+DeleteCategoryByIds
+ [Arguments] ${categoryids}
+ #删除对象
+ log todeleteobjAndCategory
+ ${response} BaseDeleteRequest /${version}/category/dict {"categoryIds":[${categoryids}]}
+ ${response_code} Get From Dictionary ${response} code
+ Should Be Equal As Strings ${response_code} 200
+ ${response} Convert to String ${response}
+ log ${response}
+DelLocalIPObject
+ log to_DelLocalIPObject
+
+ ${emptyList} Create List
+ ${objectId1} Set Variable [${testClentID},${testClentSubID}]
+ ${objectId1} json.loads ${objectId1}
+ # ${objectId1} Create List [${testClentID},${testClentSubID},${object_imsi_id},${obj_phoneNum_Id},${obj_apn_Id}]
+ DeleteObjectByIds ${objectId1}
+ SET GLOBAL VARIABLE ${testClentID} ${EMPTY}
+ SET GLOBAL VARIABLE ${testClentSubID} ${EMPTY}
+###############################################################################
+#数据分离,测试数据来自对应的yaml文件
+ObjectsByTemplate
+ [Documentation] 根据测试数据文件,使用对应公共模板,创建对象
+ ... 入参:${dataFilePath}数据文件,全路径文件名 ${keyword}测试用例名称
+ ... data数据文件格式参照:other/data/object/demo_data.yaml
+ ... 返回数据:对象idlist${objectIds},格式:[107582, 107583]
+ ... 返回数据:策略id+类型list${policyIds},格式:[{'objectId': 107582, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'},{'objectId': 107583, 'protocolField': 'TSG_SECURITY_SOURCE_ADDR'}]
+ [Arguments] ${dataFilePath} ${keyword}
+ ${yamlData}= Get File ${dataFilePath}
+ ${loadedData}= yaml.Safe Load ${yamlData}
+ ${list} Get From Dictionary ${loadedData} ${keyword}_data
+ ${objectIds} Create List
+ Comment 循环创建策略
+ FOR ${key} IN @{list}
+ LOG passssssssss
+ ${objectId} ${objectList} Run Keyword And Continue On Failure CreateObjectList ${key} ${keyword}
+ #返回的对象和策略信息添加到对象和策略列表
+ Run Keyword If "${objectId}" !="None" AppendListToList ${objectIds} ${objectId}
+ END
+ [Return] ${objectIds}
+OrangeFilter
+ [Documentation] filer对象处理,把一个filter的list处理为一个filter
+ #[Arguments] ${filterList} ${objectList}
+ [Arguments] ${objectList}
+ ${list} Create List ${objectList}
+ ${filter} Create Dictionary filter=${list}
+ #${filterList} Append To List ${filter}
+ [Return] ${filter}
+
+CreateObjectList
+ [Documentation] 处理对象
+ [Arguments] ${objectData} ${keyword}=${EMPTY}
+ Comment 针对位置进行处理
+ ${return} ${protocolField} Run Keyword And Ignore Error Get From Dictionary ${objectData} protocolField
+ #${objList} Get From Dictionary ${objectData} objList
+
+ ${objectIds} ${objectList} CreateObjects ${objectData}
+ ${objectList} Run Keyword If "${return}"=="FAIL" Set Variable ${objectList}
+ ... ELSE IF "${protocolField}" == "TSG_SECURITY_SOURCE_ADDR" or "${protocolField}" == "None" or "${protocolField}" == "TSG_SECURITY_SOURCE_LOCATION" or "${protocolField}" == "TSG_SECURITY_SOURCE_ASN" or "${protocolField}" == "TSG_FILED_GTP_IMSI" or "${protocolField}" == "TSG_FILED_GTP_PHONE_NUMBER" or "${protocolField}" == "TSG_FILED_GTP_APN" Set Variable ${objectList}
+ ##############destination
+ ... ELSE IF "${protocolField}" == "TSG_SECURITY_DESTINATION_ADDR" or "${protocolField}" == "TSG_SECURITY_DESTINATION_LOCATION" or "${protocolField}" == "TSG_SECURITY_DESTINATION_ASN" Set Variable ${objectList}
+ #filter
+ ... ELSE OrangeFilter ${objectList}
+ [Return] ${objectIds} ${objectList}
+CreateObjects
+ [Documentation] 处理对象
+ [Arguments] ${objectData}
+ Comment 针对位置进行处理
+ #${YAML}= Get File ${path}/data/mode.yaml
+ #${LOADED}= yaml.Safe Load ${YAML}
+ #${ipMode} Get From Dictionary ${LOADED} ip_batch_mode
+ ${return} ${protocolField} Run Keyword And Ignore Error Get From Dictionary ${objectData} protocolField
+ ${objList} Get From Dictionary ${objectData} objectList
+
+ Comment ${objJson}对象模板取自全局变量
+ ${objJson} Set Variable ${objModeJson}
+ ${objectJson} Set Variable ${objListMode}
+ #JSON处理
+ ${return} ${objectType} Run Keyword And Ignore Error Get From Dictionary ${objectData} objectType
+ ${objectJson} = Run Keyword If "${return}"!="FAIL" and "${objectType}" != "None" Replace String ${objectJson} "objectType": "ip" "objectType":"${objectType}"
+ ... ELSE Set Variable ${objectJson}
+ ${return} ${objectSubType} Run Keyword And Ignore Error Get From Dictionary ${objectData} objectSubType
+ #${objectSubType} Run Keyword If "${return}"!="FAIL" Set Variable ${objectSubType} ELSE Set Variable ${EMPTY}
+ ${objectJson} = Run Keyword If "${return}"!="FAIL" and "${objectSubType}" != "None" Replace String ${objectJson} "objectSubType": "endpoint" "objectSubType":"${objectSubType}"
+ ... ELSE Set Variable ${objectJson}
+ ${return} ${objectId} Run Keyword And Ignore Error Get From Dictionary ${objectData} objectId
+ ${objectJson} = Run Keyword If "${return}"!="FAIL" and "${objectId}" != "None" Replace String ${objectJson} "objectId": null "objectId":${objectId}
+ ... ELSE Set Variable ${objectJson}
+ ${objectJson} = Run Keyword If "${return}"!="FAIL" and "${objectId}" != "None" Replace String ${objectJson} "opAction": "add" "option": "update"
+ ... ELSE Set Variable ${objectJson}
+ #${objectId} Run Keyword If "${return}"!="FAIL" Set Variable ${objectId} ELSE Set Variable ${EMPTY}
+ #JSON处理
+ ${objectJsonList} Create List
+ ${objListType} = Evaluate type(${objList})
+ FOR ${obj} IN @{objList}
+ ${return} ${addItemList} Run Keyword And Ignore Error Get From Dictionary ${obj} addItemList
+ #${objectJson} Convert To String ${objectJson}
+ #${addItemList} Convert To String ${addItemList}
+ #${objectJson} josn.loads ${objectJson}
+ ${addItemList} json.Dumps ${addItemList}
+ #${objectJson} = Replace String ${objectJson} "addItemList": "addItemList":${itemList}
+ ${addItemList} = Run Keyword If "${return}"!="FAIL" and "${objectSubType}" == "ip_learning" Replace String ${addItemList} [{" "
+ ... ELSE Set Variable ${addItemList}
+ ${addItemList} = Run Keyword If "${return}"!="FAIL" and "${objectSubType}" == "ip_learning" Replace String ${addItemList} "}] "
+ ... ELSE Set Variable ${addItemList}
+ ${objectJson} = Run Keyword If "${return}"!="FAIL" and "${objectSubType}" == "ip_learning" Replace String ${objectJson} "addItemList": [null] "addItemList": [], ${addItemList}
+ ... ELSE IF "${return}"!="FAIL" Replace String ${objectJson} "addItemList": [null] "addItemList": ${addItemList}
+ ... ELSE Set Variable ${objectJson}
+ ${objectJson} = Replace String ${objectJson} [null] []
+ #提交接口返回id拼接
+
+ #Create File ${path}/test.txt ${objectJson}
+ #Append To File ${path}/test.txt ${objectJson}
+ ${objDictionary} json.loads ${objectJson}
+ AppendListToList ${objectJsonList} ${objDictionary}
+ END
+ ${objectData} Create Dictionary opAction=add returnData=1 objectList=${objectJsonList}
+ ${rescode} ${objectIds} CreateObject ${objectData}
+ Should Be Equal As Strings ${rescode} 200
+
+ ${protocolField} Run Keyword If "${protocolField}" != "None" Set Variable ${protocolField}
+ ${objectsList} Create List
+ FOR ${obj} IN @{objectIds}
+ ${objectList} Create Dictionary objectId=${objectIds}[0] protocolField=${protocolField}
+ Append To List ${objectsList} ${objectList}
+ END
+ [Return] ${objectIds} ${objectList}
+CreateObject
+ [Tags]
+ [Arguments] ${ipList}
+ Comment 参数${ipList}对象dict
+ Comment 创建IP
+ ${returnData} Get From Dictionary ${ipList} returnData
+ ${bodyJson} json.Dumps ${ipList}
+ #${bodyJson} = Replace String ${bodyJson} [null] []
+ ${response} BasePostRequestForV2 ${objectUrl} ${bodyJson} ${version}
+ ${objectIds} Run Keyword If "${returnData}" == "1" getObjectListIds ${response}
+ ... ELSE Create List
+ ${rescode} Set Variable ${response['code']}
+ Should Be Equal As Strings ${rescode} 200
+
+ ${objectIds} Run Keyword IF "${createObjectIds}" != "${EMPTY}" AppendListToList ${objectIds} ${createObjectIds}
+ ... ELSE Set Variable ${objectIds}
+ SET GLOBAL VARIABLE ${createObjectIds} ${objectIds}
+ [Return] ${rescode} ${objectIds}
\ No newline at end of file diff --git a/keyword/objects/process_object_body.robot b/keyword/objects/process_object_body.robot new file mode 100644 index 0000000..0c7c59d --- /dev/null +++ b/keyword/objects/process_object_body.robot @@ -0,0 +1,562 @@ +*** Settings ***
+Library json
+Library Collections
+Resource ../../variable/common_variable.txt
+Resource ../../variable/policy_object_default.txt
+Resource manage_object_body.robot
+*** Variables ***
+*** Keywords ***
+ObjectListOperation
+ [Documentation]
+ ... 描述:入口,opAction参数可为'add','update','disable','enable'
+ ... 参数:returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。
+ ... objectList: 必传,字典类型。字典内可选参数信息:
+ ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
+ ... 多个对象处理
+
+ [Arguments] ${returnData} ${objectList} ${opAction}
+ Log Call ObjectListOperation
+ ${objectListJson} Set Variable [
+ FOR ${object} IN @{objectList}
+ ${json} ObjectOrganize ${object} ${opAction}
+ ${objectListJson} Set Variable ${objectListJson}${json},
+ END
+ ${objectListJson}= Replace String Using Regexp ${objectListJson} ,$ ]
+ # 转为json结构并返回
+ ${dict} Create Dictionary opAction=${opAction} returnData=${returnData} objectList=replace:objectList
+ ${bodyJson} json.Dumps ${dict} ensure_ascii=False
+ ${json} Replace String ${bodyJson} "replace:objectList" ${objectListJson}
+ Log Object_Request_Body-${json}
+ [Return] ${json}
+
+CategoryListOperation
+ [Documentation]
+ ... 描述:入口,opAction参数可为'add','update','disable','enable'
+ ... 参数:returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。
+ ... objectList: 必传,字典类型。字典内可选参数信息:
+ ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
+ ... 多个对象处理
+
+ [Arguments] ${returnData} ${objectList} ${opAction}
+ Log Call ObjectListOperation
+ ${objectListJson} Set Variable [
+ FOR ${object} IN @{objectList}
+ ${json} CategoryOrganize ${object} ${opAction}
+ ${objectListJson} Set Variable ${objectListJson}${json},
+ END
+ ${objectListJson}= Replace String Using Regexp ${objectListJson} ,$ ]
+
+ # 转为json结构并返回
+ ${dict} Create Dictionary opAction=${opAction} returnData=${returnData} categoryList=replace:objectList
+ ${bodyJson} json.Dumps ${dict} ensure_ascii=False
+ ${json} Replace String ${bodyJson} "replace:objectList" ${json}
+
+ Log Category_Request_Body-${json}
+
+ # 转为json结构并返回
+ # ${dict} Create Dictionary opAction=${opAction} returnData=${returnData} objectList=replace:objectList
+ # ${bodyJson} json.Dumps ${dict} ensure_ascii=False
+ # ${json} Replace String ${bodyJson} "replace:objectList" ${objectListJson}
+ # Log Object_Request_Body-${json}
+ [Return] ${json}
+
+ObjectOperation
+ [Documentation]
+ ... 描述:入口,opAction参数可为'add','update','disable','enable'
+ ... 参数:returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。
+ ... object: 必传,字典类型。字典内可选参数信息:
+ ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
+ ... 单个策略处理
+
+ [Arguments] ${returnData} ${object} ${opAction}
+ Log Call ObjectOperation
+ ${json} ObjectOrganize ${object} ${opAction}
+ # 转为json结构并返回
+ ${dict} Create Dictionary opAction=${opAction} returnData=${returnData} objectList=replace:objectList
+ ${bodyJson} json.Dumps ${dict} ensure_ascii=False
+ ${json} Replace String ${bodyJson} "replace:objectList" ${json}
+
+ Log Object_Request_Body-${json}
+ [Return] ${json}
+
+InstallOperation
+ [Documentation]
+ ... 描述:入口,opAction参数可为'add','update','disable','enable'
+ ... 参数:returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。
+ ... object: 必传,字典类型。字典内可选参数信息:
+ ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
+ ... 单个策略处理
+
+ [Arguments] ${object}
+ Log Call ObjectOperation
+ ${json} ObjectOrganize ${object}
+ # 转为json结构并返回
+ ${dict} Create Dictionary opAction=${opAction} returnData=${returnData} objectList=replace:objectList
+ ${bodyJson} json.Dumps ${dict} ensure_ascii=False
+ ${json} Replace String ${bodyJson} "replace:objectList" ${json}
+
+ Log Object_Request_Body-${json}
+ [Return] ${json}
+
+FeatureOperation
+ [Documentation]
+ ... 描述:入口,opAction参数可为'add','update','disable','enable'
+ ... 参数:returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。
+ ... object: 必传,字典类型。字典内可选参数信息:
+ ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
+ ... 单个策略处理
+
+ [Arguments] ${returnData} ${object} ${opAction}
+ Log Call ObjectOperation
+ ${json} ObjectOrganize ${object} ${opAction}
+ # 转为json结构并返回
+ ${dict} Create Dictionary opAction=${opAction} returnData=${returnData} objectList=replace:objectList
+ ${bodyJson} json.Dumps ${dict} ensure_ascii=False
+ ${json} Replace String ${bodyJson} "replace:objectList" ${json}
+
+ Log Object_Request_Body-${json}
+ [Return] ${json}
+
+CategoryOperation
+ [Documentation]
+ ... 描述:入口,opAction参数可为'add','update','disable','enable'
+ ... 参数:returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。
+ ... object: 必传,字典类型。字典内可选参数信息:
+ ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
+ ... 单个策略处理
+
+ [Arguments] ${returnData} ${category} ${opAction}
+ Log Call ObjectOperation
+ ${json} CategoryOrganize ${category} ${opAction}
+
+ # 转为json结构并返回
+ ${dict} Create Dictionary opAction=${opAction} returnData=${returnData} list=replace:objectList
+ ${bodyJson} json.Dumps ${dict} ensure_ascii=False
+ ${json} Replace String ${bodyJson} "replace:objectList" ${json}
+
+ Log Category_Request_Body-${json}
+ [Return] ${json}
+
+listorone
+ [Arguments] ${object}
+ ${addItemList} Evaluate str('addItemList'in${object}.keys())
+ log ${addItemList}
+ ${subObjectIds} Evaluate str('subObjectIds'in${object}.keys())
+ log ${subObjectIds}
+ ${objectparm} set variable ${addItemList} ${subObjectIds}
+ should contain x times ${objectparm} True 1
+ # Should Not Be Empty ${object}[addItemList] or Should Not Be Empty ${object}[subObjectIds]
+ObjectOrganize
+ [Documentation]
+ ... 描述:入口,opAction参数可为'add','update','disable','enable'
+ ... object: 必传,字典类型。字典内可选参数信息:
+ ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
+ ... 单个策略转换为json
+ [Arguments] ${object} ${opAction}
+ Log Call ObjectOrganize
+ ${emptyList} Create List
+ ${returnDict} Create Dictionary
+ # 断言必传参数
+ # Should Not Be Empty ${object}[objectType]
+ # Set To Dictionary ${returnDict} objectType=${object}[objectType]
+ #新增时addItemList不能为空
+ Run Keyword If "${opAction}"=="add" listorone ${object}
+ Run Keyword If "${opAction}"=="update" Should Not Be Empty ${object}[objectId]
+ Run Keyword If "${opAction}"=="enable" Should Not Be Empty ${object}[objectId]
+ Run Keyword If "${opAction}"=="disable" Should Not Be Empty ${object}[objectId]
+
+ ${return} ${objectId} Run Keyword And Ignore Error Get From Dictionary ${object} objectId
+ Run Keyword If "${return}"=="FAIL" or "${objectId}"=="${EMPTY}" Set To Dictionary ${returnDict} objectId=${EMPTY}
+ ... ELSE Set To Dictionary ${returnDict} objectId=${objectId}
+
+ ${return} ${objectType} Run Keyword And Ignore Error Get From Dictionary ${object} objectType
+ ${objectTypeV} Run Keyword If "${return}"!="FAIL" and "${objectType}"!="${EMPTY}" Evaluate '${objectType}'.lower()
+ ... ELSE Evaluate '${Default_ObjectType}'.lower()
+ Set To Dictionary ${returnDict} objectType=${objectTypeV}
+ #enable disable直接返回json
+ Run Keyword And Return If "${opAction}"=="enable" or "${opAction}"=="disable" ManageEnableAndDisable ${object} ${returnDict} ${opAction}
+ # 取可选参数,为传入设置默认值
+ Set To Dictionary ${returnDict} objectType=${objectTypeV}
+ ${return} ${objectSubType} Run Keyword And Ignore Error Get From Dictionary ${object} objectSubType
+ Run Keyword If "${return}"!="FAIL" and "${objectSubType}"!="${EMPTY}" Set To Dictionary ${returnDict} objectSubType=${objectSubType}
+ ... ELSE Set To Dictionary ${returnDict} objectSubType=${Default_ObjectSubType}
+ ${return} ${isValid} Run Keyword And Ignore Error Get From Dictionary ${object} isValid
+ Run Keyword If "${return}"=="FAIL" or "${isValid}"=="${EMPTY}" Set To Dictionary ${returnDict} isValid=${Default_IsValid}
+ ... ELSE Set To Dictionary ${returnDict} isValid=${isValid}
+
+ ${return} ${isInitialize} Run Keyword And Ignore Error Get From Dictionary ${object} isInitialize
+ Run Keyword If "${return}"=="FAIL" or "${isInitialize}"=="${EMPTY}" Set To Dictionary ${returnDict} isInitialize=${Default_IsInitialize}
+ ... ELSE Set To Dictionary ${returnDict} isInitialize=${isInitialize}
+ ${return} ${isExclusion} Run Keyword And Ignore Error Get From Dictionary ${object} isExclusion
+ Run Keyword If "${return}"=="FAIL" or "${isExclusion}"=="${EMPTY}" Set To Dictionary ${returnDict} isExclusion=${Default_IsExclusion}
+ ... ELSE Set To Dictionary ${returnDict} isExclusion=${isExclusion}
+ ${return} ${objectName} Run Keyword And Ignore Error Get From Dictionary ${object} objectName
+ Run Keyword If "${return}"=="FAIL" or "${objectName}"=="${EMPTY}" Set To Dictionary ${returnDict} objectName=${Default_ObjectName}
+ ... ELSE Set To Dictionary ${returnDict} objectName=${objectName}
+ ${return} ${objectDesc} Run Keyword And Ignore Error Get From Dictionary ${object} objectDesc
+ Run Keyword If "${return}"!="FAIL" and "${objectDesc}"!="${EMPTY}" Set To Dictionary ${returnDict} objectDesc=${objectDesc}
+ ... ELSE Set To Dictionary ${returnDict} objectDesc=${Default_ObjectDesc}
+ ${return} ${subObjectIds} Run Keyword And Ignore Error Get From Dictionary ${object} subObjectIds
+ Run Keyword If "${return}"!="FAIL" and "${subObjectIds}"!="${EMPTY}" and "${subObjectIds}"!="${None}" Set To Dictionary ${returnDict} subObjectIds=${subObjectIds}
+ ... ELSE Set Variable ${emptyList}
+
+ ${return} ${iconColor} Run Keyword And Ignore Error Set Variable ${object['iconColor']}
+ Run Keyword If "${return}"!="FAIL" Set To Dictionary ${returnDict} iconColor=${iconColor}
+ #补充ip learning对象
+ ${return} ${fromFqdns} Run Keyword And Ignore Error Get From Dictionary ${object} fromFqdns
+ Run Keyword If "${return}"!="FAIL" Set To Dictionary ${returnDict} fromFqdns=${fromFqdns}
+ #... ELSE Set To Dictionary ${returnDict} fromFqdns=${emptyList}
+ log ${fromFqdns}
+ ${return} ${fromProtocol} Run Keyword And Ignore Error Get From Dictionary ${object} fromProtocol
+ Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} fromProtocol=${fromProtocol}
+ #... ELSE Set To Dictionary ${returnDict} fromProtocol=${Default_fromProtocol}
+ ${return} ${learningDepth} Run Keyword And Ignore Error Get From Dictionary ${object} learningDepth
+ Run Keyword If "${return}"!="FAIL" and "${learningDepth}"!="${EMPTY}" Set To Dictionary ${returnDict} learningDepth=${learningDepth}
+ #... ELSE Set To Dictionary ${returnDict} learningDepth=${Default_learningDepth}
+ ${return} ${agingTime} Run Keyword And Ignore Error Get From Dictionary ${object} agingTime
+ Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} agingTime=${agingTime}
+ #... ELSE Set To Dictionary ${returnDict} agingTime=${Default_agingTime}
+ ${return} ${voteClientNum} Run Keyword And Ignore Error Get From Dictionary ${object} voteClientNum
+ Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} voteClientNum=${voteClientNum}
+ #... ELSE Set To Dictionary ${returnDict} voteClientNum=${Default_voteClientNum}
+ ${return} ${learnedIpLimit} Run Keyword And Ignore Error Get From Dictionary ${object} learnedIpLimit
+ Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} learnedIpLimit=${learnedIpLimit}
+ #... ELSE Set To Dictionary ${returnDict} learnedIpLimit=${Default_learnedIpLimit}
+
+ # 处理AddItemList
+ ${return} ${addItemList} Run Keyword And Ignore Error Get From Dictionary ${object} addItemList
+ Run Keyword If "${return}"!="FAIL" and "${addItemList}"!="${EMPTY}" ManageAddItemListNew ${addItemList} ${returnDict} ${objectTypeV} ${objectSubType}
+
+ # 处理UpdateItemList
+ ${return} ${updateItemList} Run Keyword And Ignore Error Get From Dictionary ${object} updateItemList
+ Run Keyword If "${opAction}"=="update" and "${return}"!="FAIL" and "${updateItemList}"!="${EMPTY}" ManageUpdateItemList ${updateItemList} ${returnDict} ${objectTypeV} ${objectSubType}
+ # 处理deleteItemIds
+ ${return} ${deleteItemIds} Run Keyword And Ignore Error Get From Dictionary ${object} deleteItemIds
+ Run Keyword If "${opAction}"=="update" and "${return}"!="FAIL" and "${deleteItemIds}"!="${EMPTY}" ManageDeleteItemIds ${deleteItemIds} ${returnDict}
+ # 转为json结构并返回
+ ${json} json.Dumps ${returnDict} ensure_ascii=False
+ Log Object-${json}
+ [Return] ${json}
+Categorylistorone
+ [Arguments] ${category}
+ ${addItemList} Evaluate str('fqdnList'in${category}.keys())
+ log ${addItemList}
+ ${objectparm} set variable ${addItemList}
+ should contain x times ${objectparm} True 1
+ # Should Not Be Empty ${object}[addItemList] or Should Not Be Empty ${object}[subObjectIds]
+
+CategoryOrganize
+ [Documentation]
+ ... 描述:入口,opAction参数可为'add','update','disable','enable'
+ ... object: 必传,字典类型。字典内可选参数信息:
+ ... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
+ ... 单个策略转换为json
+ [Arguments] ${category} ${opAction}
+ Log Call CategoryOrganize
+ ${emptyList} Create List
+ ${returnDict} Create Dictionary
+ # 断言必传参数
+ # Should Not Be Empty ${object}[objectType]
+ # Set To Dictionary ${returnDict} objectType=${object}[objectType]
+ #新增时addItemList不能为空
+ Run Keyword If "${opAction}"=="add" Categorylistorone ${category}
+ Run Keyword If "${opAction}"=="update" Should Not Be Empty ${category}[categoryId]
+ Run Keyword If "${opAction}"=="update" Should Not Be Empty ${category}[objectId]
+ ${return} ${objectId} Run Keyword And Ignore Error Get From Dictionary ${category} objectId
+ Run Keyword If "${return}"=="FAIL" or "${objectId}"=="${EMPTY}" Set To Dictionary ${returnDict} objectId=${EMPTY}
+ ... ELSE Set To Dictionary ${returnDict} objectId=${objectId}
+ ${return} ${categoryId} Run Keyword And Ignore Error Get From Dictionary ${category} categoryId
+ Run Keyword If "${return}"=="FAIL" or "${categoryId}"=="${EMPTY}" Set To Dictionary ${returnDict} categoryId=${EMPTY}
+ ... ELSE Set To Dictionary ${returnDict} categoryId=${categoryId}
+
+ ${return} ${categoryType} Run Keyword And Ignore Error Get From Dictionary ${category} categoryType
+ ${categoryTypeV} Run Keyword If "${return}"!="FAIL" and "${categoryType}"!="${EMPTY}" Evaluate '${categoryType}'.lower()
+ ... ELSE Evaluate '${Default_CategoryType}'.lower()
+ Set To Dictionary ${returnDict} categoryType=${categoryTypeV}
+ # 取可选参数,为传入设置默认值
+ Set To Dictionary ${returnDict} categoryType=${categoryTypeV}
+ # ${return} ${isDelete} Run Keyword And Ignore Error Get From Dictionary ${category} isDelete
+ # Run Keyword If "${return}"=="FAIL" or "${isDelete}"=="${EMPTY}" Set To Dictionary ${returnDict} isDelete=${Default_IsDelete}
+ # ... ELSE Set To Dictionary ${returnDict} isDelete=${isDelete}
+ ${return} ${categoryDimension} Run Keyword And Ignore Error Get From Dictionary ${category} categoryDimension
+ Run Keyword If "${return}"=="FAIL" or "${categoryDimension}"=="${EMPTY}" Set To Dictionary ${returnDict} categoryDimension=${Default_Dimension}
+ ... ELSE Set To Dictionary ${returnDict} categoryDimension=${categoryDimension}
+ ${return} ${categoryOrigin} Run Keyword And Ignore Error Get From Dictionary ${category} categoryOrigin
+ Run Keyword If "${return}"=="FAIL" or "${categoryOrigin}"=="${EMPTY}" Set To Dictionary ${returnDict} categoryOrigin=${Default_Origin}
+ ... ELSE Set To Dictionary ${returnDict} categoryOrigin=${categoryOrigin}
+ ${return} ${isInitialize} Run Keyword And Ignore Error Get From Dictionary ${category} isInitialize
+ Run Keyword If "${return}"=="FAIL" or "${isInitialize}"=="${EMPTY}" Set To Dictionary ${returnDict} isInitialize=${Default_IsInitialize}
+ ... ELSE Set To Dictionary ${returnDict} isInitialize=${isInitialize}
+ ${return} ${categoryName} Run Keyword And Ignore Error Get From Dictionary ${category} categoryName
+ Run Keyword If "${return}"=="FAIL" or "${categoryName}"=="${EMPTY}" Set To Dictionary ${returnDict} categoryName=${Default_ObjectName}
+ ... ELSE Set To Dictionary ${returnDict} categoryName=${categoryName}
+ ${return} ${categoryDesc} Run Keyword And Ignore Error Get From Dictionary ${category} categoryDesc
+ Run Keyword If "${return}"!="FAIL" and "${categoryDesc}"!="${EMPTY}" Set To Dictionary ${returnDict} categoryDesc=${categoryDesc}
+ ... ELSE Set To Dictionary ${returnDict} categoryDesc=${Default_ObjectDesc}
+ ${return} ${objectSubType} Run Keyword And Ignore Error Get From Dictionary ${category} objectSubType
+ Run Keyword If "${return}"!="FAIL" and "${objectSubType}"!="${EMPTY}" Set To Dictionary ${returnDict} objectSubType=${objectSubType}
+ ... ELSE Set To Dictionary ${returnDict} objectSubType=${Default_ObjectSubType}
+ # 处理AddItemList
+ ${return} ${addItemList} Run Keyword And Ignore Error Get From Dictionary ${category} fqdnList
+ Run Keyword If "${opAction}"=="add" Should Not Be Empty ${addItemList}
+ # Run Keyword If "${return}"!="FAIL" and "${addItemList}"!="${EMPTY}" ManageAddItemListNew ${addItemList} ${returnDict} ${categoryTypeV} ${objectSubType}
+ ManageAddItemListNew ${addItemList} ${returnDict} ${categoryTypeV} ${objectSubType}
+
+ # 删除无用判断key值objectSubType
+ Remove From Dictionary ${returnDict} objectSubType
+ # 转为json结构并返回
+ ${json} json.Dumps ${returnDict} ensure_ascii=False
+ Log Object-${json}
+ [Return] ${json}
+
+ManageEnableAndDisable
+ [Documentation]
+ ... 启用与禁用时调用
+ [Arguments] ${object} ${returnDict} ${opAction}
+ Run Keyword If "${opAction}"=="enable" Set To Dictionary ${returnDict} isValid=1
+ Run Keyword If "${opAction}"=="disable" Set To Dictionary ${returnDict} isValid=0
+ ${json} json.Dumps ${returnDict} ensure_ascii=False
+ Log Object-${json}
+ [Return] ${json}
+ManageAddItemListNew
+ # 处理addItemList数组
+ [Arguments] ${addItemList} ${returnDict} ${type} ${subType}
+ Log Call ManageAddItemListNew
+ ${itemList} Create List
+ FOR ${item} IN @{addItemList}
+ ${itemNew} Run Keyword If '${type}'=='ip' and '${subType}'=="geo_location" ManageGeoItem ${item} ${subType} add
+ ... ELSE IF '${type}'=='ip' ManageIpItem ${item} ${subType} add
+ ... ELSE IF '${type}'=='url' or ('${type}'=='fqdn' and '${subType}'!='category') or '${type}'=='keywords' or '${type}'=='subscriberid' or '${type}'=='fqdn_category' or '${type}'=='account' or '${type}'=='app_id' or '${type}'=='mobile_identity' or '${type}'=='apn'
+ ... ManageStrItem ${item} ${type} add
+ ... ELSE IF '${type}'=='file_type' ManageFileItem ${item} ${type} add
+ ... ELSE IF '${type}'=='fqdn' and '${subType}'=='category' ManageCategory ${item} ${type} add
+ ... ELSE IF '${type}'=='http_signature' ManageExtensionStrItem ${item} ${type} add
+ ... ELSE IF '${type}'=='file_size' or '${type}'=='file_integrity_rate' ManageNumberItem ${item} ${type} add
+ ... ELSE Fail
+ Append To List ${itemList} ${itemNew}
+ END
+ Run Keyword If '${subType}'=='category' Set To Dictionary ${returnDict} fqdnList=${itemList}
+ ... ELSE Set To Dictionary ${returnDict} addItemList=${itemList}
+
+
+ManageUpdateItemList
+ [Documentation]
+ ... 处理updateItemList
+ [Arguments] ${updateItemList} ${returnDict} ${type} ${subType}
+ ${itemList} Create List
+ FOR ${item} IN @{updateItemList}
+ ${itemId} Get From Dictionary ${item} itemId
+
+
+ ${itemNew} Run Keyword If '${type}'=='ip' and '${subType}'=="geo_location" ManageGeoItem ${item} ${subType} update
+ ... ELSE IF '${type}'=='ip' ManageIpItem ${item} ${subType} update
+ ... ELSE IF '${type}'=='url' or '${type}'=='fqdn' or '${type}'=='keywords' or '${type}'=='subscriberid' or '${type}'=='fqdn_category' or '${type}'=='account' or '${type}'=='app_id'
+ ... ManageStrItem ${item} ${type} update
+ ... ELSE IF '${type}'=='file_type' ManageFileItem ${item} ${type} update
+ ... ELSE IF '${type}'=='http_signature' ManageExtensionStrItem ${item} ${type} update
+ ... ELSE IF '${type}'=='file_size' or '${type}'=='file_integrity_rate' ManageNumberItem ${item} ${type} update
+ ... ELSE Fail
+ Set To Dictionary ${itemNew} itemId=${itemId}
+ #由于接口更新时是否内置字段会导致40014001,策略对象单元不可改是否为内置(isInitialize)参数状态,这里去掉是否内置字段
+ Remove From Dictionary ${itemNew} isInitialize
+ Append To List ${itemList} ${itemNew}
+ END
+ Set To Dictionary ${returnDict} updateItemList=${itemList}
+ManageIpItem
+ [Documentation]
+ ... ip item处理
+ [Arguments] ${item} ${subType} ${action}
+ Log Call ManageIpItem
+ ${return} ${isSession} Run Keyword And Ignore Error Get From Dictionary ${item} isSession
+ ${isSession} Run Keyword If "${return}"!="FAIL" Set Variable ${isSession} ELSE Set Variable ${EMPTY}
+ Run Keyword If "${action}"=="add" Should Not Be Empty ${isSession}
+ ${return} ${ip} Run Keyword And Ignore Error Get From Dictionary ${item} ip
+ ${ip} Run Keyword If "${return}"!="FAIL" Set Variable ${ip} ELSE Set Variable ${EMPTY}
+ Run Keyword If "${action}"=="add" Should Not Be Empty ${ip}
+ ${return} ${port} Run Keyword And Ignore Error Get From Dictionary ${item} port
+ Run Keyword If "${action}"=="add" Should Not Be Empty ${port}
+ #Run Keyword If "${action}"=="add" Dictionary Should Contain Key ${item} direction
+ #${return} ${direction} Run Keyword And Ignore Error Get From Dictionary ${item} direction
+ #${direction} Run Keyword If "${return}"!="FAIL" Set Variable ${direction} ELSE Set Variable ${EMPTY}
+ #Run Keyword If "${action}"=="add" Dictionary Should Contain Key ${item} protocol
+ ${return} ${protocol} Run Keyword And Ignore Error Get From Dictionary ${item} protocol
+ ${protocol} Run Keyword If "${return}"!="FAIL" Set Variable ${protocol} ELSE Set Variable ${EMPTY}
+ ${return} ${isInitialize} Run Keyword And Ignore Error Set Variable ${item['isInitialize']}
+ ${isInitialize} Run Keyword If "${return}"!="FAIL" Set Variable ${isInitialize}
+ ... ELSE Set Variable ${EMPTY}
+ ${return} ${itemName} Run Keyword And Ignore Error Set Variable ${item['itemName']}
+ ${itemName} Run Keyword If "${return}"!="FAIL" Set Variable ${itemName}
+ ... ELSE Set Variable ${EMPTY}
+ ${return} ${itemDesc} Run Keyword And Ignore Error Set Variable ${item['itemDesc']}
+ ${itemDesc} Run Keyword If "${return}"!="FAIL" Set Variable ${itemDesc}
+ ... ELSE Set Variable ${EMPTY}
+ ${itemNew} Create Dictionary
+ Run Keyword If "${isSession}"!="${EMPTY}" Set To Dictionary ${itemNew} isSession=${isSession}
+ Run Keyword If "${ip}"!="${EMPTY}" Set To Dictionary ${itemNew} ip=${ip}
+ Run Keyword If "${port}"!="${EMPTY}" Set To Dictionary ${itemNew} port=${port}
+ #Run Keyword If "${direction}"!="${EMPTY}" Set To Dictionary ${itemNew} direction=${direction}
+ Run Keyword If "${protocol}"!="${EMPTY}" Set To Dictionary ${itemNew} protocol=${protocol}
+ Run Keyword If "${isInitialize}"!="${EMPTY}" Set To Dictionary ${itemNew} isInitialize=${isInitialize}
+ Run Keyword If "${itemName}"!="${EMPTY}" Set To Dictionary ${itemNew} itemName=${itemName}
+ Run Keyword If "${itemDesc}"!="${EMPTY}" Set To Dictionary ${itemNew} itemDesc=${itemDesc}
+ [Return] ${itemNew}
+
+ManageGeoItem
+ [Documentation]
+ ... ip item处理
+ [Arguments] ${item} ${subType} ${action}
+ Log ManageGeoItem
+ ${return} ${keywordArray} Run Keyword And Ignore Error Get From Dictionary ${item} keywordArray
+ ${keywordArray} Run Keyword If "${return}"!="FAIL" Set Variable ${keywordArray} ELSE Set Variable ${EMPTY}
+ ${itemNew} Create Dictionary
+ ${kArray} Create List
+ Run Keyword If "${keywordArray}"!="${EMPTY}" Append To List ${kArray} ${keywordArray}
+ Run Keyword If "${keywordArray}"!="${EMPTY}" Set To Dictionary ${itemNew} keywordArray=${kArray}
+ [Return] ${itemNew}
+
+ManageStrItem
+ [Documentation]
+ ... 字符串item处理
+ [Arguments] ${item} ${type} ${action}
+ Log Call ManageStrItem
+ ${return} ${keywordArray} Run Keyword And Ignore Error Set Variable ${item['keywordArray']}
+ ${keywordArray} Run Keyword If "${return}"!="FAIL" Set Variable ${keywordArray} ELSE Set Variable ${EMPTY}
+ Run Keyword If "${action}"=="add" Should Not Be Empty ${keywordArray}
+ ${array} Evaluate re.split('[,]', '${keywordArray}') re
+
+ Run Keyword If "${action}"=="add" Dictionary Should Contain Key ${item} isHexbin
+ ${return} ${isHexbin} Run Keyword And Ignore Error Get From Dictionary ${item} isHexbin
+ ${isHexbin} Run Keyword If "${return}"!="FAIL" Set Variable ${isHexbin}
+ ... ELSE Set Variable ${EMPTY}
+
+ ${return} ${isInitialize} Run Keyword And Ignore Error Set Variable ${item['isInitialize']}
+ ${isInitialize} Run Keyword If "${return}"!="FAIL" Set Variable ${isInitialize}
+ ... ELSE Set Variable ${EMPTY}
+ ${return} ${itemName} Run Keyword And Ignore Error Set Variable ${item['itemName']}
+ ${itemName} Run Keyword If "${return}"!="FAIL" Set Variable ${itemName}
+ ... ELSE Set Variable ${EMPTY}
+ ${return} ${itemDesc} Run Keyword And Ignore Error Set Variable ${item['itemDesc']}
+ ${itemDesc} Run Keyword If "${return}"!="FAIL" Set Variable ${itemDesc}
+ ... ELSE Set Variable ${EMPTY}
+
+ ${itemNew} Create Dictionary
+ Run Keyword If "${keywordArray}"!="${EMPTY}" Set To Dictionary ${itemNew} keywordArray=${array}
+ Run Keyword If "${isHexbin}"!="${EMPTY}" Set To Dictionary ${itemNew} isHexbin=${isHexbin}
+ Run Keyword If "${isInitialize}"!="${EMPTY}" Set To Dictionary ${itemNew} isInitialize=${isInitialize}
+ Run Keyword If "${itemName}"!="${EMPTY}" Set To Dictionary ${itemNew} itemName=${itemName}
+ Run Keyword If "${itemDesc}"!="${EMPTY}" Set To Dictionary ${itemNew} itemDesc=${itemDesc}
+ [Return] ${itemNew}
+
+ManageCategory
+ [Documentation]
+ ... 字符串item处理
+ [Arguments] ${item} ${type} ${action}
+ Log Call ManageStrItem
+ ${return} ${fqdn} Run Keyword And Ignore Error Set Variable ${item['fqdn']}
+ ${fqdn} Run Keyword If "${return}"!="FAIL" Set Variable ${fqdn} ELSE Set Variable ${EMPTY}
+ Run Keyword If "${action}"=="add" Should Not Be Empty ${fqdn}
+ ${itemNew} Create Dictionary
+ Run Keyword If "${fqdn}"!="${EMPTY}" Set To Dictionary ${itemNew} fqdn=${fqdn}
+ [Return] ${itemNew}
+
+ManageFileItem
+ [Documentation]
+ ... 接口未说明,待接口说明字段类型之后再完善
+ [Arguments] ${item} ${type} ${action}
+ Log Call ManageFileItem
+ [Return] ${item}
+ManageExtensionStrItem
+ [Documentation]
+ ... http_signature参数说明
+ [Arguments] ${item} ${type} ${action}
+ Log Call ManageExtensionStrItem
+ ${return} ${district} Run Keyword And Ignore Error Get From Dictionary ${item} district
+ ${district} Run Keyword If "${return}"!="FAIL" Set Variable ${district} ELSE Set Variable ${EMPTY}
+ Run Keyword If "${action}"=="add" Should Not Be Empty ${district}
+ ${itemNew} ManageStrItem ${item} ${type} ${action}
+ Run Keyword If "${district}"!="${EMPTY}" Set To Dictionary ${itemNew} district=${district}
+ [Return] ${itemNew}
+ManageNumberItem
+ [Documentation]
+ ... 接口未说明,待接口说明字段类型之后再完善
+ [Arguments] ${item} ${type} ${action}
+ Log Call ManageNumberItem
+ [Return] ${item}
+ManageDeleteItemIds
+ [Documentation]
+ ... 处理deleteItemIds
+ ... ${1},${2},${3} -> [1,2,3]
+ [Arguments] ${deleteItemIds} ${returnDict}
+ ${list} Evaluate re.split('[,]', '${deleteItemIds}') re
+ ${list1} Create List
+ FOR ${var} IN @{list}
+ ${var} Run Keyword If '${var}'.isdigit() Evaluate int('${var}')
+ ... ELSE Set Variable ${var}
+ Append To List ${list1} ${var}
+ END
+ Set To Dictionary ${returnDict} deleteItemIds=${list1}
+GetObjectIds
+ [Documentation]
+ ... 获取结果中的对象ID
+ [Arguments] ${value}
+ Log Call Get-ObjectIds
+ ${objectIds} Create List
+ ${objectIdsTemp} Set Variable ${EMPTY}
+ ${return} ${data} Run Keyword And Ignore Error Get From Dictionary ${value} data
+ Return From Keyword If "${return}"=="FAIL" ${objectIdsTemp}
+
+ FOR ${object} IN @{value['data']['objectList']}
+ Append To List ${objectIds} ${object['objectId']}
+ END
+ ${json} json.Dumps ${objectIds} ensure_ascii=False
+ ${json} Remove String ${json} [
+ ${json} Remove String ${json} ]
+ [Return] ${json}
+getObjectListIds
+ [Documentation]
+ ... 获取结果中的对象ID
+ [Arguments] ${value}
+ Log Call Get-ObjectIds
+ ${objectIds} Create List
+ ${objectIdsTemp} Set Variable ${EMPTY}
+ ${return} ${data} Run Keyword And Ignore Error Get From Dictionary ${value} data
+ Return From Keyword If "${return}"=="FAIL" ${objectIdsTemp}
+
+ FOR ${object} IN @{value['data']['objectList']}
+ Append To List ${objectIds} ${object['objectId']}
+ END
+ [Return] ${objectIds}
+GetCategoryIds
+ [Documentation]
+ ... 获取结果中的对象ID
+ [Arguments] ${value}
+ Log Call Get-ObjectIds
+ ${CategoryIds} Create List
+ ${CategoryTemp} Set Variable ${EMPTY}
+ ${return} ${data} Run Keyword And Ignore Error Get From Dictionary ${value} data
+ Return From Keyword If "${return}"=="FAIL" ${CategoryTemp}
+
+ FOR ${category} IN @{value['data']['list']}
+ Append To List ${CategoryIds} ${category['categoryId']}
+ END
+ ${json} json.Dumps ${CategoryIds} ensure_ascii=False
+ ${json} Remove String ${json} [
+ ${json} Remove String ${json} ]
+ [Return] ${json}
+GetCategoryObjIds
+ [Documentation]
+ ... 获取Category结果中的对象ID
+ [Arguments] ${value}
+ Log Call Get-CategoryObjectIds
+ ${CategoryObjIds} Create List
+ ${CategoryTemp} Set Variable ${EMPTY}
+ ${return} ${data} Run Keyword And Ignore Error Get From Dictionary ${value} data
+ Return From Keyword If "${return}"=="FAIL" ${CategoryTemp}
+
+ FOR ${category} IN @{value['data']['list']}
+ Append To List ${CategoryObjIds} ${category['objectId']}
+ END
+ ${json} json.Dumps ${CategoryObjIds} ensure_ascii=False
+ ${json} Remove String ${json} [
+ ${json} Remove String ${json} ]
+ [Return] ${json}
\ No newline at end of file |
