This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
dongxiaoyan-tsg-autotest/02-Keyword/tsg_bfapi/device/Device.robot

252 lines
11 KiB
Plaintext
Raw Normal View History

*** Settings ***
Library Collections
Library RequestsLibrary
Library json
Resource ../../../03-Variable/BifangApiVariable.txt
Resource ../../../02-Keyword/tsg_bfapi/policy_file_interface/FunctionalKeywords.robot
Library Collections
Resource ../Common.robot
*** Variables ***
${deviceUrl} /device
${listSplitor} ,
${itemSplitor} |
*** Keywords ***
GetSNList
[Documentation]
... 设备SN列表查询
[Arguments]
${response} BaseFormRequest ${deviceUrl}/sn ${EMPTY} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']['list']}
GetSNInfo
[Documentation]
... 设备SN信息查询
[Arguments] ${sn}
${response} BaseFormRequest ${deviceUrl} sn=${sn} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']['list']}
GetDeviceDatas
[Documentation]
... 设备信息数据查询
... SN=${SN}
... startTime YYYY-MM-DD HH:mm:ss
... endTime YYYY-MM-DD HH:mm:ss
... dataType,数据类型可为traffics,cpu,mem,port,alarm
[Arguments] ${SN} ${startTime} ${endTime} ${dataType}
Should Not Be Empty ${SN}
Should Not Be Empty ${startTime}
Should Not Be Empty ${endTime}
Should Not Be Empty ${dataType}
${dict} Create Dictionary SN=${SN} startTime=${startTime} endTime=${endTime}
${queryParams} Dictionary-To-QueryParams ${dict}
${response} BaseGetRequestForV2 ${deviceUrl}/${dataType} ${queryParams} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}
ClearAlarm
[Documentation]
... 清除设备告警数据
... params为一个list
... list中一个单元的结构如下
... ${alarm_id}|${chassis_ip}|${operated_by}|${notes}
... alarm_id,chassis_ip不能为空
[Arguments] ${params}
${list} Create List
FOR ${param} IN @{params}
${param} Evaluate re.split('[${itemSplitor}]', '${param}') re
Should Not Be Empty ${param[0]}
Should Not Be Empty ${param[1]}
#${alarm_id} Evaluate int(${param[0]})
${dict} Create Dictionary alarm_id=${param[0]} chassis_ip=${param[1]}
Run Keyword If "${param[2]}" != "${EMPTY}" Set To Dictionary ${dict} operated_by=${param[2]}
Run Keyword If "${param[3]}" != "${EMPTY}" Set To Dictionary ${dict} notes=${param[3]}
Append To List ${list} ${dict}
END
${json} json.Dumps ${list}
${response} BaseDeleteRequest /${version}${deviceUrl}/alarm ${json}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${rescode}
GetDeviceChassis
[Documentation]
... 获取设备板卡信息
... sn sn号
[Arguments] ${sn}
Should Not Be Empty ${sn}
${response} BaseGetRequestForV2 ${deviceUrl}/chassis sn=${sn} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}
GetClusterStatus
[Documentation]
... 获取集群设备状态
[Arguments]
${response} BaseGetRequestForV2 ${deviceUrl}/clusterStatus ${EMPTY} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}
GetDeviceTag
[Documentation]
... 查询设备标签信息
[Arguments] ${pageSize} ${pageNo} ${id} ${tagType} ${tagName} ${pid}
${dict} Create Dictionary
Run Keyword If "${pageSize}" != "${EMPTY}" Set To Dictionary ${dict} pageSize=${pageSize}
Run Keyword If "${pageNo}" != "${EMPTY}" Set To Dictionary ${dict} pageNo=${pageNo}
Run Keyword If "${id}" != "${EMPTY}" Set To Dictionary ${dict} id=${id}
Run Keyword If "${tagType}" != "${EMPTY}" Set To Dictionary ${dict} tagType=${tagType}
Run Keyword If "${tagName}" != "${EMPTY}" Set To Dictionary ${dict} tagName=${tagName}
Run Keyword If "${pid}" != "${EMPTY}" Set To Dictionary ${dict} pid=${pid}
${queryParams} Dictionary-To-QueryParams ${dict}
${response} BaseGetRequestForV2 /deviceTag ${queryParams} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']['list']}
AddDeviceTag
[Documentation]
... 新增设备标签
... params结构如下
... pid1|tagName1,pid2|tagName2
[Arguments] ${params}
Should Not Be Empty ${params}
${list} Evaluate re.split('[${listSplitor}]', '${params}') re
${dataList} Create List
FOR ${param} IN @{list}
${paramList} Evaluate re.split('[${itemSplitor}]', '${param}') re
${dict} Create Dictionary tagName=${paramList[1]}
${pid} Run Keyword If "${paramList[0]}" != "${EMPTY}" Evaluate int(${paramList[0]})
... ELSE Set Variable ${EMPTY}
Run Keyword If "${pid}" != "${EMPTY}" Set To Dictionary ${dict} pid=${pid}
Append To List ${dataList} ${dict}
END
${dict} Create Dictionary list=${dataList}
${json} json.Dumps ${dict}
${response} BasePostRequestForV2 /deviceTag ${json} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${rescode}
GetDeviceTagRefer
[Documentation]
... 获取设备标签引用
[Arguments]
${response} BaseGetRequestForV2 /deviceTag/refer ${EMPTY} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}
GetNtpInfo
[Documentation]
... ntp信息查询
[Arguments]
${response} BaseFormRequest /ntp ${EMPTY} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}
EditNtpInfo
[Documentation]
... ntp信息修改
[Arguments] ${serverIP}
${dict} Create Dictionary serverIP=${serverIP}
${response} BaseFormEditRequest /ntp ${dict} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}
TsgOamRedirect
[Documentation]
... oam转发调用
... path请求转发oam的路径
... methodhttp请求方式,大写
... params 请求参数
[Arguments] ${path} ${method} ${contentType} ${params}
${params} Run Keyword If "${method}" == "GET" Dictionary-To-QueryParams ${params}
... ELSE IF "${contentType}"=="application/json" json.Dumps ${params}
... ELSE Set Variable ${params}
${response} OamRequest /${version}/tsgoam ${path} ${method} ${contentType} ${params}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}
UpdateSnmp
[Documentation]
... 更新SNMP配置
... params 支持list或者dict
... params参数
... chassis_ip 必填
... snmp_version 必填
... users: user1|pwd1|operation1,user2|pwd2|operation2
[Arguments] ${params}
${type} Evaluate type(${params})
${dictOrList} Run Keyword If "${type}"=="<class 'dict'>" ProcessUpdateSnmpBody ${params}
... ELSE UpdateSnmpList ${params}
${data} TsgOamRedirect /cm/snmp/ POST application/json ${dictOrList}
[Return] ${data}
UpdateSnmpBatch
[Documentation]
... 批量更新SNMP配置
[Arguments] ${snmp_version} ${user} ${pwd}
${dict} Create Dictionary snmp_version=${snmp_version} user=${user} pwd=${pwd}
${response} BaseFormPostRequest /tsgoam/snmpBatch ${dict} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}
UpdateSnmpList
[Documentation]
... 更新SNMP配置
... params参数list
[Arguments] ${params}
${list} Create List
FOR ${param} IN @{params}
${dict} ProcessUpdateSnmpBody ${param}
Append To List ${list} ${dict}
END
[Return] ${list}
ProcessUpdateSnmpBody
[Documentation]
... 更新SNMP配置
... params参数
... chassis_ip 必填
... snmp_version 必填
... users: user1|pwd1|operation1,user2|pwd2|operation2
[Arguments] ${params}
${return} ${chassis_ip} Run Keyword And Ignore Error Get From Dictionary ${params} chassis_ip
${chassis_ip} Run Keyword If "${return}" == "FAIL" Set Variable ${EMPTY}
... ELSE Set Variable ${chassis_ip}
${return} ${snmp_version} Run Keyword And Ignore Error Get From Dictionary ${params} snmp_version
${snmp_version} Run Keyword If "${return}" == "FAIL" Set Variable ${EMPTY}
... ELSE Set Variable ${snmp_version}
${return} ${users} Run Keyword And Ignore Error Get From Dictionary ${params} users
${users} Run Keyword If "${return}" == "FAIL" Set Variable ${EMPTY}
... ELSE Set Variable ${users}
Should Not Be Empty ${chassis_ip}
Should Not Be Empty ${snmp_version}
${users} Run Keyword If "${snmp_version}" == "v2" Create List
... ELSE ProcessUserList ${users}
${dict} Create Dictionary chassis_ip=${chassis_ip} snmp_version=${snmp_version} users=${users}
[Return] ${dict}
ProcessUserList
[Documentation]
... 处理用户
[Arguments] ${userList}
${users} Create List
${userList} Evaluate re.split('[${listSplitor}]', '${userList}') re
FOR ${user} IN @{userList}
${user} Evaluate re.split('[${itemSplitor}]', '${user}') re
Should Not Be Empty ${user[2]}
${dict} Create Dictionary operation=${user[2]}
Run Keyword If "${user[0]}" != "${EMPTY}" Set To Dictionary ${dict} user=${user[0]}
Run Keyword If "${user[1]}" != "${EMPTY}" Set To Dictionary ${dict} pwd=${user[1]}
Append To List ${users} ${dict}
END
[Return] ${users}