+Flexible SSH Login
+ [Arguments] ${user} ${password}=${EMPTY} ${delay}=0.5s
+ [Documentation] On active SSH session: if given non-empty password, do Login, else do Login With Public Key.
+ ${pwd_length} = BuiltIn.Get Length ${password}
+ # ${pwd_length} is guaranteed to be an integer, so we are safe to evaluate it as Python expression.
+ BuiltIn.Run Keyword And Return If ${pwd_length} > 0 SSHLibrary.Login ${user} ${password} delay=${delay}
+ BuiltIn.Run Keyword And Return SSHLibrary.Login With Public Key ${user} ${USER_HOME}/.ssh/${SSH_KEY} ${KEYFILE_PASS} delay=${delay}
+
+Flexible Mininet Login
+ [Arguments] ${user}=${MININET_USER} ${password}=${MININET_PASSWORD} ${delay}=0.5s
+ [Documentation] Call Flexible SSH Login, but with default values suitable for Mininet machine.
+ BuiltIn.Run Keyword And Return Flexible SSH Login user=${user} password=${password} delay=${delay}
+
+Flexible Controller Login
+ [Arguments] ${user}=${CONTROLLER_USER} ${password}=${CONTROLLER_PASSWORD} ${delay}=0.5s
+ [Documentation] Call Flexible SSH Login, but with default values suitable for Controller machine.
+ BuiltIn.Run Keyword And Return Flexible SSH Login user=${user} password=${password} delay=${delay}
+