*** Settings ***
+Documentation Karaf library. This library is useful to deal with controller Karaf console.
Library SSHLibrary
Library OperatingSystem
Variables ../variables/Variables.py
Issue Command On Karaf Console
[Arguments] ${cmd} ${controller}=${CONTROLLER} ${karaf_port}=${KARAF_SHELL_PORT} ${timeout}=5
[Documentation] Will execute the given ${cmd} by ssh'ing to the karaf console running on ${CONTROLLER}
- ... Note that this keyword will open&close new SSH connection, without switching back to previously current session.
+ ... Note that this keyword will open&close new SSH connection, without switching back to previously current session.
Open Connection ${controller} port=${karaf_port} prompt=${KARAF_PROMPT} timeout=${timeout}
Login ${KARAF_USER} ${KARAF_PASSWORD}
Write ${cmd}
BuiltIn.Set Suite Variable ${KarafKeywords__karaf_connection_index} ${karaf_connection.index}
Restore Current SSH Connection From Index ${current_ssh_connection.index}
+Configure Timeout For Karaf Console
+ [Arguments] ${timeout}
+ [Documentation] Configure a different timeout for the Karaf console
+ BuiltIn.Run Keyword If ${KarafKeywords__karaf_connection_index} == -1 Fail Need to connect to a Karaf Console first
+ ${current_connection_index}= SSHLibrary.Switch Connection ${KarafKeywords__karaf_connection_index}
+ SSHLibrary.Set_Client_Configuration timeout=${timeout}
+ Restore Current SSH Connection From Index ${current_connection_index}
+
Execute Controller Karaf Command On Background
[Arguments] ${command}
[Documentation] Send command to karaf without affecting current SSH connection. Read, log and return response.
BuiltIn.Run Keyword If '${status_wait}' != 'PASS' BuiltIn.Fail Failed to see prompt after sending the command: ${command}
[Return] ${message_wait}
+Execute Controller Karaf Command With Retry On Background
+ [Arguments] ${command}
+ [Documentation] Attemp to send command to karaf, if fail then open connection and try again.
+ ${status} ${message}= BuiltIn.Run Keyword And Ignore Error Execute Controller Karaf Command On Background ${command}
+ BuiltIn.Return_From_Keyword_If '${status}' == 'PASS' ${message}
+ # TODO: Verify this does not leak connections indices.
+ Open Controller Karaf Console On Background
+ ${message}= Execute Controller Karaf Command On Background ${command}
+ [Return] ${message}
+
Log Message To Controller Karaf
[Arguments] ${message}
[Documentation] Send a message into the controller's karaf log file. Do not change current SSH connection.
- ${reply}= Execute Controller Karaf Command On Background log:log "ROBOT MESSAGE: ${message}"
+ ${reply}= Execute Controller Karaf Command With Retry On Background log:log "ROBOT MESSAGE: ${message}"
[Return] ${reply}
Log Test Suite Start To Controller Karaf
Log Testcase Start To Controller Karaf
[Documentation] Log test case name to karaf log, useful in test case setup.
Log Message To Controller Karaf Starting test ${TEST_NAME}
+
+Set Bgpcep Log Levels
+ [Arguments] ${bgpcep_level}=${DEFAULT_BGPCEP_LOG_LEVEL} ${protocol_level}=${DEFAULT_PROTOCOL_LOG_LEVEL}
+ [Documentation] Assuming OCKCOB was used, set logging level on bgpcep and protocol loggers without affecting current SSH session.
+ # FIXME: Move to appropriate Resource
+ Execute Controller Karaf Command On Background log:set ${bgpcep_level} org.opendaylight.bgpcep
+ Execute Controller Karaf Command On Background log:set ${protocol_level} org.opendaylight.protocol