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 Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

*** 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}