| *** Settings *** | 
 | Documentation  Remote syslog utilities keywords. | 
 |  | 
 | Resource         ../lib/resource.robot | 
 | Resource         ../lib/rest_client.robot | 
 | Resource         ../lib/utils.robot | 
 |  | 
 | *** Keywords *** | 
 |  | 
 | Configure Remote Log Server With Parameters | 
 |     [Documentation]  Configure the remote logging server on BMC. | 
 |     [Arguments]  ${remote_host}=${REMOTE_LOG_SERVER_HOST} | 
 |     ...          ${remote_port}=${REMOTE_LOG_SERVER_PORT} | 
 |  | 
 |     # Description of argument(s): | 
 |     # remote_host  The host name or IP address of the remote logging server | 
 |     #              (e.g. "xx.xx.xx.xx"). | 
 |     # remote_port  Remote ryslog server port number (e.g. "514"). | 
 |  | 
 |     # Example: | 
 |     # https://xx.xx.xx.xx/xyz/openbmc_project/logging/config/remote | 
 |     # Response code:200, Content:{ | 
 |     # "data": { | 
 |     #     "Address": "xx.xx.xx.xx", | 
 |     #     "Port": 514 | 
 |     # }, | 
 |     # "message": "200 OK", | 
 |     # "status": "ok" | 
 |     # } | 
 |  | 
 |     ${host_dict}=  Create Dictionary  data=${remote_host} | 
 |     Write Attribute  ${REMOTE_LOGGING_URI}  Address  data=${host_dict} | 
 |     ...  verify=${TRUE}  expected_value=${remote_host} | 
 |  | 
 |     Sleep  20s | 
 |  | 
 |     ${remote_port}=  Convert To Integer  ${remote_port} | 
 |     ${port_dict}=  Create Dictionary  data=${remote_port} | 
 |     Write Attribute  ${REMOTE_LOGGING_URI}  Port  data=${port_dict} | 
 |     ...  verify=${TRUE}  expected_value=${remote_port} | 
 |  | 
 |     Sleep  20s | 
 |  | 
 |  | 
 | Configure Remote Log Server | 
 |     [Documentation]  Configure the remote logging server on BMC. | 
 |     [Arguments]  ${remote_host}=${REMOTE_LOG_SERVER_HOST} | 
 |     ...          ${remote_port}=${REMOTE_LOG_SERVER_PORT} | 
 |  | 
 |     # Description of argument(s): | 
 |     # remote_host  The host name or IP address of the remote logging server | 
 |     #              (e.g. "xx.xx.xx.xx"). | 
 |     # remote_port  Remote ryslog server port number (e.g. "514"). | 
 |  | 
 |     @{remote_parm_list}=  Create List  ${remote_host}  ${remote_port} | 
 |  | 
 |     ${data}=  Create Dictionary  data=@{remote_parm_list} | 
 |  | 
 |     ${resp}=  OpenBMC Post Request | 
 |     ...  ${REMOTE_LOGGING_CONFIG_URI}/action/remote  data=${data} | 
 |  | 
 |     Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK} | 
 |  | 
 |  | 
 | Verify Rsyslog Config On BMC | 
 |     [Documentation]  Check if the rsyslog configuration on BMC is correct. | 
 |     [Arguments]  ${remote_host}=${REMOTE_LOG_SERVER_HOST} | 
 |     ...          ${remote_port}=${REMOTE_LOG_SERVER_PORT} | 
 |  | 
 |     # Description of argument(s): | 
 |     # remote_host  The host name or IP address of the remote logging server | 
 |     #              (e.g. "xx.xx.xx.xx"). | 
 |     # remote_port  Remote ryslog server port number (e.g. "514"). | 
 |  | 
 |     # Example: | 
 |     # Configured: | 
 |     # *.* @@xx.xx.xx.xx:514root@bmchostname | 
 |     # By default: | 
 |     # #*.* @@remote-host:port | 
 |  | 
 |     ${ryslog_conf}  ${stderr}  ${rc}=  BMC Execute Command | 
 |     ...  cat /etc/rsyslog.d/server.conf | 
 |  | 
 |     ${config}=  Catenate  @@${remote_host}:${remote_port} | 
 |  | 
 |     Should Contain  ${ryslog_conf}  ${config} | 
 |     ...  msg=${remote_host} and ${remote_port} are not configured. | 
 |  | 
 |  | 
 | Remote Logging Server Execute Command | 
 |     [Documentation]  Login to remote logging server. | 
 |     [Arguments]  ${command} | 
 |     ...          ${remote_host}=${REMOTE_LOG_SERVER_HOST} | 
 |     ...          ${username}=${REMOTE_USERNAME} | 
 |     ...          ${password}=${REMOTE_PASSWORD} | 
 |  | 
 |     # Description of argument(s): | 
 |     # command          Command line string. | 
 |     # remote_host    The host name or IP address of the remote logging server | 
 |     #                (e.g. "xx.xx.xx.xx"). | 
 |     # username       Remote rsyslog server user name. | 
 |     # password       Remote rsyslog server password. | 
 |  | 
 |     ${remote_dict}=  Create Dictionary  host=${remote_host} | 
 |     Open Connection And Log In  ${username}  ${password} | 
 |     ...  &{remote_dict} | 
 |     ${stdout}  ${stderr}=  Execute Command  ${command}  return_stderr=True | 
 |     Should Be Empty  ${stderr} | 
 |     RETURN  ${stdout} | 
 |  | 
 |  | 
 | Get Remote Log Server Configured | 
 |     [Documentation]  Check that remote logging server is not configured. | 
 |  | 
 |     ${address}=  Read Attribute  ${REMOTE_LOGGING_URI}  Address | 
 |     Should Not Be Equal  ${address}  ${REMOTE_LOG_SERVER_HOST} | 
 |  | 
 |     ${port_number}=  Convert To Integer  ${REMOTE_LOG_SERVER_PORT} | 
 |     ${port}=  Read Attribute  ${REMOTE_LOGGING_URI}  Port | 
 |     Should Not Be Equal  ${port}  ${port_number} |