*** 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的路径 ... method:http请求方式,大写 ... 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}"=="" 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}