2020-04-07 14:11:59 +08:00
|
|
|
|
*** Settings ***
|
|
|
|
|
|
Library json
|
|
|
|
|
|
Library Collections
|
|
|
|
|
|
Resource ../../03-Variable/BifangApiVariable.txt
|
2020-04-09 17:43:22 +08:00
|
|
|
|
Resource ../../02-Keyword/tsg_bfapi/PolicyObject.robot
|
2020-04-07 14:11:59 +08:00
|
|
|
|
|
|
|
|
|
|
*** Keywords ***
|
|
|
|
|
|
# ... 特殊参数说明:
|
|
|
|
|
|
# ... effectiveRange=Nursurtan|Transtelecom&Astel,Almaty&Nursurtan,|Astel&Transtelecom
|
|
|
|
|
|
# ... 为字符串类型,每条生效区域信息以','分隔
|
|
|
|
|
|
# ... ①以'|'字符开头表示仅为isp信息,如:effectiveRange=|Astel&Transtelecom
|
|
|
|
|
|
# ... ②非'|'字符开头表示仅为location信息或location和isp信息,如:
|
|
|
|
|
|
# ... effectiveRange=Nursurtan(仅为location信息)
|
|
|
|
|
|
# ... effectiveRange=Nursurtan|Transtelecom&Astel(location和isp信息)
|
|
|
|
|
|
# ... userRegion=protocol:HTTP,keyring:${1}
|
|
|
|
|
|
# ... 为字符串类型,每条动作参数以','分隔
|
|
|
|
|
|
# ... [key]:[value],...
|
|
|
|
|
|
# ... referenceObject=${265}|TSG_FIELD_HTTP_HOST,${266}|TSG_FIELD_SSL_SNI&TSG_FIELD_SSL_SAN
|
|
|
|
|
|
# ... 为字符串类型,每条引用的策略对象信息以','分隔
|
|
|
|
|
|
# ... [objectId]|[protocolFileds],... ,多个protocolFileds用'&'连接
|
|
|
|
|
|
# ... scheduleId=${3},${1}
|
|
|
|
|
|
# ... 为字符串类型,以','分隔
|
|
|
|
|
|
# ... appObjectIdArray==${2},${3}
|
|
|
|
|
|
# ... 为字符串类型,以','分隔
|
|
|
|
|
|
# ...
|
|
|
|
|
|
# ... 注:数字类型变量为${0}、${1}、${...}
|
|
|
|
|
|
|
2020-04-08 19:16:24 +08:00
|
|
|
|
PolicyParamsOpertion
|
2020-04-07 14:11:59 +08:00
|
|
|
|
[Documentation]
|
|
|
|
|
|
... 描述:入口,opAction参数固定为'add'
|
|
|
|
|
|
... 参数:returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。
|
|
|
|
|
|
... policyList: 必传,字典类型。字典内可选参数信息:
|
|
|
|
|
|
... action: 必传,无默认值
|
|
|
|
|
|
... policyType: 必传,无默认值
|
|
|
|
|
|
... policyName: 可选,默认为'test_policy_add'
|
|
|
|
|
|
... policyDesc: 可选,无默认值
|
|
|
|
|
|
... userTags: 可选,无默认值
|
|
|
|
|
|
... doLog: 可选,是否生成日志,${0}(不需要),${1}(需要),${2}(只记录结构化日志)。默认为${2}
|
|
|
|
|
|
... isValid: 可选,${0}(无效),${1}(生效)
|
|
|
|
|
|
... effectiveRange: 可选
|
|
|
|
|
|
... userRegion: 可选
|
|
|
|
|
|
... referenceObject: 可选
|
|
|
|
|
|
... scheduleId: 可选
|
|
|
|
|
|
... appObjectIdArray: 可选
|
|
|
|
|
|
|
|
|
|
|
|
[Arguments] ${returnData} ${policyList}
|
|
|
|
|
|
${emptyList} Create List
|
|
|
|
|
|
# 断言必传参数
|
|
|
|
|
|
Should Not Be Empty ${policyList}[policyType]
|
|
|
|
|
|
Should Not Be Empty ${policyList}[action]
|
|
|
|
|
|
# 取可选参数,为传入设置默认值
|
|
|
|
|
|
${return} ${policyName} Run Keyword And Ignore Error Set Variable ${policyList}[policyName]
|
|
|
|
|
|
Run Keyword If "${return}"=="FAIL" or "${policyName}"=="${EMPTY}" Set To Dictionary ${policyList} policyName=test_policy_add
|
|
|
|
|
|
${return} ${policyDesc} Run Keyword And Ignore Error Set Variable ${policyList}[policyDesc]
|
|
|
|
|
|
Run Keyword If "${return}"=="FAIL" or "${policyDesc}"=="${EMPTY}" Set To Dictionary ${policyList} policyDesc=
|
|
|
|
|
|
${return} ${userTags} Run Keyword And Ignore Error Set Variable ${policyList}[userTags]
|
|
|
|
|
|
Run Keyword If "${return}"=="FAIL" or "${userTags}"=="${EMPTY}" Set To Dictionary ${policyList} userTags=
|
|
|
|
|
|
${return} ${doLog} Run Keyword And Ignore Error Set Variable ${policyList}[doLog]
|
|
|
|
|
|
Run Keyword If "${return}"=="FAIL" or "${doLog}"=="${EMPTY}" Set To Dictionary ${policyList} doLog=${2}
|
|
|
|
|
|
${return} ${isValid} Run Keyword And Ignore Error Set Variable ${policyList}[isValid]
|
|
|
|
|
|
Run Keyword If "${return}"=="FAIL" or "${isValid}"=="${EMPTY}" Set To Dictionary ${policyList} isValid=${0}
|
|
|
|
|
|
${return} ${scheduleId} Run Keyword And Ignore Error Set Variable ${policyList}[scheduleId]
|
|
|
|
|
|
${scheduleIdV} Run Keyword If "${return}"=="FAIL" or "${scheduleId}"=="${EMPTY}" Set Variable ${emptyList}
|
|
|
|
|
|
... ELSE Evaluate re.split('[,]', '${scheduleId}') re
|
|
|
|
|
|
${return} ${appObjectIdArray} Run Keyword And Ignore Error Set Variable ${policyList}[appObjectIdArray]
|
|
|
|
|
|
${appObjectIdArrayV} Run Keyword If "${return}"=="FAIL" or "${appObjectIdArray}"=="${EMPTY}" Set Variable ${emptyList}
|
|
|
|
|
|
... ELSE Evaluate re.split('[,]', '${appObjectIdArray}') re
|
|
|
|
|
|
Set To Dictionary ${policyList} scheduleId=${scheduleIdV}
|
|
|
|
|
|
Set To Dictionary ${policyList} appObjectIdArray=${appObjectIdArrayV}
|
|
|
|
|
|
# 固定值
|
|
|
|
|
|
Set To Dictionary ${policyList} policyId= doBlacklist=${0}
|
|
|
|
|
|
# 分别处理EffectiveRange、UserRegion和ReferenceObject参数
|
|
|
|
|
|
ManageEffectiveRange ${policyList}
|
|
|
|
|
|
ManageUserRegion ${policyList}
|
|
|
|
|
|
ManageReferenceObject ${policyList}
|
|
|
|
|
|
# 转为json结构并返回
|
|
|
|
|
|
${dict} Create Dictionary opAction=add returnData=${returnData} policyList=${policyList}
|
|
|
|
|
|
${json} json.Dumps ${dict} ensure_ascii=False
|
|
|
|
|
|
Log ${json}
|
|
|
|
|
|
[Return] ${json}
|
|
|
|
|
|
|
|
|
|
|
|
ManageEffectiveRange
|
|
|
|
|
|
# 处理EffectiveRange
|
|
|
|
|
|
[Arguments] ${policyList}
|
|
|
|
|
|
${emptyList} Create List
|
|
|
|
|
|
${emptyListDouble} Create List ${emptyList}
|
|
|
|
|
|
|
|
|
|
|
|
${return} ${effectiveRange} Run Keyword And Ignore Error Set Variable ${policyList}[effectiveRange]
|
|
|
|
|
|
${value} Run Keyword If "${return}"=="FAIL" or "${effectiveRange}"=="${EMPTY}" Create Dictionary tag_sets=${emptyListDouble}
|
|
|
|
|
|
... ELSE AnalysisEffectiveRange ${effectiveRange}
|
|
|
|
|
|
Set To Dictionary ${policyList} effectiveRange=${value}
|
|
|
|
|
|
|
|
|
|
|
|
AnalysisEffectiveRange
|
|
|
|
|
|
# 解析EffectiveRange,区分值类型
|
|
|
|
|
|
[Arguments] ${effectiveRange}
|
|
|
|
|
|
${value} Create List
|
|
|
|
|
|
${list} Evaluate re.split('[,]', '${effectiveRange}') re
|
|
|
|
|
|
FOR ${var} IN @{list}
|
|
|
|
|
|
${param} Run Keyword If '${var}'.startswith('|') EffectiveRangeValueType1 ${var}
|
|
|
|
|
|
... ELSE IF '|' in '${var}' EffectiveRangeValueType2 ${var}
|
|
|
|
|
|
... ELSE EffectiveRangeValueType3 ${var}
|
|
|
|
|
|
Append To List ${value} ${param}
|
|
|
|
|
|
END
|
|
|
|
|
|
${obj} Create Dictionary tag_sets=${value}
|
|
|
|
|
|
[Return] ${obj}
|
|
|
|
|
|
|
|
|
|
|
|
EffectiveRangeValueType1
|
|
|
|
|
|
# EffectiveRange值类型1,仅为isp信息
|
|
|
|
|
|
[Arguments] ${str}
|
|
|
|
|
|
# #Astel
|
|
|
|
|
|
${value} Evaluate '${str}'[1:]
|
|
|
|
|
|
|
|
|
|
|
|
${valueList} Create List
|
|
|
|
|
|
${list} Evaluate re.split('[&]', '${value}') re
|
|
|
|
|
|
FOR ${var} IN @{list}
|
|
|
|
|
|
Append To List ${valueList} ${var}
|
|
|
|
|
|
END
|
|
|
|
|
|
${obj} Create Dictionary tag=isp value=${valueList}
|
|
|
|
|
|
${return} Create List ${obj}
|
|
|
|
|
|
[Return] ${return}
|
|
|
|
|
|
|
|
|
|
|
|
EffectiveRangeValueType2
|
|
|
|
|
|
# EffectiveRange值类型2,location|isp都包含
|
|
|
|
|
|
[Arguments] ${str}
|
|
|
|
|
|
# Nursurtan#Transtelecom
|
|
|
|
|
|
${list} Evaluate re.split('[|]', '${str}') re
|
|
|
|
|
|
# Location
|
|
|
|
|
|
${valueList1} Create List
|
|
|
|
|
|
${list1} Evaluate re.split('[&]', '${list}[0]') re
|
|
|
|
|
|
FOR ${var} IN @{list1}
|
|
|
|
|
|
Append To List ${valueList1} ${var}
|
|
|
|
|
|
END
|
|
|
|
|
|
${obj1} Create Dictionary tag=location value=${valueList1}
|
|
|
|
|
|
# ISP
|
|
|
|
|
|
${valueList2} Create List
|
|
|
|
|
|
${list2} Evaluate re.split('[&]', '${list}[1]') re
|
|
|
|
|
|
FOR ${var} IN @{list2}
|
|
|
|
|
|
Append To List ${valueList2} ${var}
|
|
|
|
|
|
END
|
|
|
|
|
|
${obj2} Create Dictionary tag=isp value=${valueList2}
|
|
|
|
|
|
|
|
|
|
|
|
${return} Create List ${obj1} ${obj2}
|
|
|
|
|
|
[Return] ${return}
|
|
|
|
|
|
|
|
|
|
|
|
EffectiveRangeValueType3
|
|
|
|
|
|
# EffectiveRange值类型3,仅为location信息
|
|
|
|
|
|
[Arguments] ${str}
|
|
|
|
|
|
# Almaty
|
|
|
|
|
|
${valueList} Create List
|
|
|
|
|
|
${list} Evaluate re.split('[&]', '${str}') re
|
|
|
|
|
|
FOR ${var} IN @{list}
|
|
|
|
|
|
Append To List ${valueList} ${var}
|
|
|
|
|
|
END
|
|
|
|
|
|
${obj} Create Dictionary tag=location value=${valueList}
|
|
|
|
|
|
${return} Create List ${obj}
|
|
|
|
|
|
[Return] ${return}
|
|
|
|
|
|
|
|
|
|
|
|
ManageUserRegion
|
|
|
|
|
|
[Arguments] ${policyList}
|
|
|
|
|
|
${emptyObj} Create Dictionary
|
|
|
|
|
|
|
|
|
|
|
|
${return} ${userRegion} Run Keyword And Ignore Error Set Variable ${policyList}[userRegion]
|
|
|
|
|
|
${value} Run Keyword If "${return}"=="FAIL" or "${userRegion}"=="${EMPTY}" Create Dictionary
|
|
|
|
|
|
... ELSE AnalysisUserRegion ${userRegion}
|
|
|
|
|
|
Set To Dictionary ${policyList} userRegion=${value}
|
|
|
|
|
|
|
|
|
|
|
|
Log ${policyList}[userRegion]
|
|
|
|
|
|
|
|
|
|
|
|
AnalysisUserRegion
|
|
|
|
|
|
[Arguments] ${userRegion}
|
|
|
|
|
|
# protocol:HTTP,keyring:1
|
|
|
|
|
|
${obj} Create Dictionary
|
|
|
|
|
|
${list} Evaluate re.split('[,]', '${userRegion}') re
|
|
|
|
|
|
FOR ${var} IN @{list}
|
|
|
|
|
|
${k} Evaluate '${var}'[0:'${var}'.find(':')]
|
|
|
|
|
|
${v} Evaluate '${var}'['${var}'.find(':')+1:]
|
|
|
|
|
|
${v} Run Keyword If '${v}'.isdigit() Evaluate int('${v}')
|
|
|
|
|
|
... ELSE Set Variable ${v}
|
|
|
|
|
|
Set To Dictionary ${obj} ${k}=${v}
|
|
|
|
|
|
END
|
|
|
|
|
|
[Return] ${obj}
|
|
|
|
|
|
|
|
|
|
|
|
ManageReferenceObject
|
|
|
|
|
|
# 处理引用对象字符串
|
|
|
|
|
|
[Arguments] ${policyList}
|
|
|
|
|
|
${emptyList} Create List
|
|
|
|
|
|
${clientHostObj} Run Keyword If '${addTestClentIPFlag}'=='1' ManageClientObject
|
|
|
|
|
|
Run Keyword If "${clientHostObj}"!="${None}" Append To List ${emptyList} ${clientHostObj}
|
|
|
|
|
|
|
|
|
|
|
|
${defaultObj} Create Dictionary
|
|
|
|
|
|
${return} ${referenceObject} Run Keyword And Ignore Error Set Variable ${policyList}[referenceObject]
|
|
|
|
|
|
${value} Run Keyword If "${return}"=="FAIL" or "${referenceObject}"=="${EMPTY}" Create List ${defaultObj}
|
|
|
|
|
|
... ELSE AnalysisReferenceObject ${referenceObject}
|
|
|
|
|
|
# 若参数为空,设置默认结构
|
|
|
|
|
|
FOR ${var} IN @{value}
|
|
|
|
|
|
Run Keyword If ${var}!={} Append To List ${emptyList} ${var}
|
|
|
|
|
|
END
|
|
|
|
|
|
Set To Dictionary ${policyList} referenceObject=${emptyList}
|
|
|
|
|
|
|
|
|
|
|
|
ManageClientObject
|
|
|
|
|
|
# 增加引用测试终端IP策略对象
|
2020-04-14 18:20:47 +08:00
|
|
|
|
${emptyList} Create List TSG_SECURITY_SOURCE_ADDR
|
2020-04-07 14:11:59 +08:00
|
|
|
|
${obj} Create Dictionary objectId=${testClentID} protocolFields=${emptyList}
|
|
|
|
|
|
[Return] ${obj}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AnalysisReferenceObject
|
|
|
|
|
|
# 解析引用对象
|
|
|
|
|
|
[Arguments] ${referenceObject}
|
|
|
|
|
|
${objList} Create List
|
|
|
|
|
|
${list} Evaluate re.split('[,]', '${referenceObject}') re
|
|
|
|
|
|
FOR ${var} IN @{list}
|
|
|
|
|
|
${emptyList} Create List
|
|
|
|
|
|
${emptyObj} Create Dictionary
|
|
|
|
|
|
${key} Evaluate '${var}'[0:'${var}'.find('|')]
|
|
|
|
|
|
${values} Evaluate '${var}'['${var}'.find('|')+1:]
|
|
|
|
|
|
${valueList} InnerForEach ${values}
|
|
|
|
|
|
${key} Run Keyword If '${key}'.isdigit() Evaluate int('${key}')
|
|
|
|
|
|
... ELSE Set Variable ${key}
|
|
|
|
|
|
Set To Dictionary ${emptyObj} objectId=${key}
|
|
|
|
|
|
Set To Dictionary ${emptyObj} protocolFields=${valueList}
|
|
|
|
|
|
Append To List ${objList} ${emptyObj}
|
|
|
|
|
|
END
|
|
|
|
|
|
[Return] ${objList}
|
|
|
|
|
|
|
|
|
|
|
|
InnerForEach
|
|
|
|
|
|
# 循环嵌套
|
|
|
|
|
|
[Arguments] ${values}
|
|
|
|
|
|
${emptyList} Create List
|
|
|
|
|
|
${list} Evaluate re.split('[&]', '${values}') re
|
|
|
|
|
|
FOR ${var} IN @{list}
|
|
|
|
|
|
Append To List ${emptyList} ${var}
|
|
|
|
|
|
END
|
|
|
|
|
|
[Return] ${list}
|
|
|
|
|
|
|