blob: b1b90b29b293545011b6ea647c96c7565914d873 [file] [log] [blame]
Documentation Utility for SNMP configurations via Redfish.
*** Settings ***
Resource ../../lib/utils.robot
Resource ../../lib/connection_client.robot
Library ../../lib/gen_misc.py
Library ../../lib/utils.py
*** Keywords ***
Get SNMP Manager List
[Documentation] Get the list of SNMP managers and return IP addresses and ports.
# Get the list of SNMP manager URIs.
@{snmp_mgr_uris}= Get SNMP Child URIs
${snmp_mgr_list}= Create List
FOR ${snmp_mgr_uri} IN @{snmp_mgr_uris}
# Sample output:
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions/snmp1",
# "@odata.type": "#EventDestination.v1_7_0.EventDestination",
# "Context": "",
# "Destination": "snmp://xx.xx.xx.xx:162",
# "EventFormatType": "Event",
# "Id": "snmp1",
# "Name": "Event Destination snmp1",
# "Protocol": "SNMPv2c",
# "SubscriptionType": "SNMPTrap"
${resp}= Redfish.Get ${snmp_mgr_uri}
${snmp_mgr}= Get From Dictionary ${resp.dict} Destination
Append To List ${snmp_mgr_list} ${snmp_mgr}
END
[Return] ${snmp_mgr_list}
Configure SNMP Manager Via Redfish
[Documentation] Configure SNMP manager on BMC via Redfish.
[Arguments] ${snmp_mgr_ip} ${snmp_port} ${valid_status_codes}=${HTTP_CREATED}
# Description of argument(s):
# snmp_mgr_ip SNMP manager IP address
# snmp_port SNMP manager port
# valid_status_code expected code
${snmp_mgr_data}= Create Dictionary Destination=snmp://${snmp_mgr_ip}:${snmp_port}
... SubscriptionType=${snmp_function} Protocol=${snmp_version}
Redfish.Post ${subscription_uri} body=&{snmp_mgr_data}
... valid_status_codes=[${valid_status_codes}]
Verify SNMP Manager Configured On BMC
[Documentation] Verify SNMP manager configured on BMC.
[Arguments] ${snmp_mgr_ip} ${snmp_port}
# Description of argument(s):
# snmp_mgr_ip SNMP manager IP address
# snmp_port SNMP manager port
# Get the list of SNMP managers that are configured on BMC.
@{snmp_mgr_list}= Get SNMP Manager List
${snmp_ip_port}= Catenate ${snmp_mgr_ip}:${snmp_port}
List Should Contain Value ${snmp_mgr_list} snmp://${snmp_ip_port}
... msg=SNMP manager is not configured.
Get SNMP Child URIs
[Documentation] Get the list of all SNMP manager URIs.
# Sample output of SNMP URI:
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions",
# "@odata.type": "#EventDestinationCollection.EventDestinationCollection",
# "Members": [
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions/snmp6"
# },
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions/snmp2"
# },
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions/snmp9"
# },
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions/snmp1"
# },
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions/snmp8"
# },
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions/snmp4"
# },
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions/snmp7"
# },
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions/snmp5"
# },
# {
# "@odata.id": "/redfish/v1/EventService/Subscriptions/snmp3"
# }
# ],
# "Members@odata.count": 9,
# "Name": "Event Destination Collections"
# Get the list of child URIs.
@{snmp_mgr_uris}= Redfish.Get Members List ${subscription_uri} filter=snmp
[Return] ${snmp_mgr_uris}