1*** Settings *** 2Documentation Utilities for SNMP testing. 3 4Resource ../../lib/rest_client.robot 5Resource ../../lib/utils.robot 6 7*** Keywords *** 8 9Get SNMP URI List 10 [Documentation] Get all SNMP URIs and return them as list. 11 12 # Sample output: 13 # "data": [ 14 # "/xyz/openbmc_project/network/snmp/manager/e9767624", 15 # "/xyz/openbmc_project/network/snmp/manager/31f4ce8b" 16 # ], 17 18 @{snmp_uri_list}= Read Properties ${SNMP_MANAGER_URI} 19 20 RETURN @{snmp_uri_list} 21 22Configure SNMP Manager On BMC 23 [Documentation] Configure SNMP manager on BMC. 24 [Arguments] ${snmp_ip} ${port} ${expected_result} 25 26 # Description of argument(s): 27 # snmp_ip SNMP manager IP. 28 # port Network port where SNMP manager is listening. 29 # expected_result Expected status of SNMP configuration. 30 31 @{snmp_parm_list}= Create List ${snmp_ip} ${port} 32 ${data}= Create Dictionary data=@{snmp_parm_list} 33 34 ${resp}= OpenBMC Post Request 35 ... ${SNMP_MANAGER_URI}action/Client data=${data} 36 37 Run Keyword If '${expected_result}' == 'error' 38 ... Should Be Equal As Strings 39 ... ${resp.status_code} ${HTTP_BAD_REQUEST} 40 ... msg=Allowing the configuration of an invalid SNMP. 41 ... ELSE 42 ... Should Be Equal As Strings ${resp.status_code} ${HTTP_OK} 43 ... msg=Not allowing the configuration of a valid SNMP. 44 45 46Get List Of SNMP Manager And Port Configured On BMC 47 [Documentation] Get list of SNMP managers and return the list. 48 49 @{snmp_uri_list}= Get SNMP URI List 50 @{ip_and_port_list}= Create List 51 52 # Sample output of snmp_uri_list enumeration. 53 # { 54 # "data": { 55 # "/xyz/openbmc_project/network/snmp/manager/92ae7a66": { 56 # "Address": "10.6.6.6", 57 # "AddressFamily": "xyz.openbmc_project.Network.Client.IPProtocol.IPv4", 58 # "Port": 186 59 # }, 60 61 FOR ${snmp_uri} IN @{snmp_uri_list} 62 ${ip}= Read Attribute ${snmp_uri} Address 63 ${port}= Read Attribute ${snmp_uri} Port 64 Append To List ${ip_and_port_list} ${ip} ${port} 65 END 66 67 RETURN @{ip_and_port_list} 68 69 70Verify SNMP Manager 71 [Documentation] Verify SNMP manager configured on BMC. 72 [Arguments] ${snmp_ip} ${port} 73 74 # Description of argument(s): 75 # snmp_ip SNMP manager IP. 76 # port Network port where SNMP manager is listening. 77 78 @{ip_and_port}= Create List ${snmp_ip} ${port} 79 80 @{ip_and_port_list}= Get List Of SNMP Manager And Port Configured On BMC 81 82 List Should Contain Sub List ${ip_and_port_list} ${ip_and_port} 83 ... msg=Valid SNMP manager is not found on BMC. 84 85 86Get SNMP Manager Object 87 [Documentation] Find the SNMP object for the given ip and port and return it. 88 # If no object can be located, return ${EMPTY}. 89 [Arguments] ${ip} ${port} 90 91 # Description of argument(s): 92 # ip SNMP manager IP. 93 # port Network port where SNMP manager is listening. 94 95 ${snmp_objs}= Read Properties ${SNMP_MANAGER_URI}enumerate 96 FOR ${snmp_obj} IN @{snmp_objs} 97 ${obj}= Set Variable ${snmp_objs['${snmp_obj}']} 98 Run Keyword If 99 ... '${obj['Address']}' == '${ip}' and '${obj['Port']}' == '${port}' 100 ... Return From Keyword ${snmp_obj} 101 END 102 103 Return From Keyword ${EMPTY} 104 105 106Delete SNMP Manager And Object 107 [Documentation] Delete SNMP manager. 108 [Arguments] ${snmp_ip} ${port} 109 110 # Description of argument(s): 111 # snmp_ip SNMP manager IP. 112 # port Network port where SNMP manager is listening. 113 114 ${snmp_obj}= Get SNMP Manager Object ${snmp_ip} ${port} 115 116 # If the given IP and port is not configured, return. 117 # Otherwise, delete the IP and object. 118 119 Run Keyword And Return If '${snmp_obj}' == '${EMPTY}' 120 ... Pass Execution SNMP manager to be deleted is not configured. 121 122 OpenBMC Delete Request ${snmp_obj} 123 124 # Verify whether deleted SNMP is removed from BMC system. 125 ${status}= Run Keyword And Return Status Verify SNMP Manager 126 ... ${snmp_ip} ${port} 127 Should Be Equal ${status} ${False} msg=SNMP manager is not deleted. 128 129 130Start SNMP Manager 131 [Documentation] Start SNMP listener on the remote SNMP manager. 132 133 Open Connection And Log In ${SNMP_MGR1_USERNAME} ${SNMP_MGR1_PASSWORD} 134 ... alias=snmp_server host=${SNMP_MGR1_IP} 135 136 # The execution of the SNMP_TRAPD_CMD is necessary to cause SNMP to begin 137 # listening to SNMP messages. 138 SSHLibrary.write ${SNMP_TRAPD_CMD} & 139