1*** Settings ***
2Documentation     This module is for SSH connection override to QEMU
3...               based openbmc systems.
4
5Library           SSHLibrary   timeout=30 seconds
6Library           OperatingSystem
7Library           Collections
8
9*** Variables ***
10
11*** Keywords ***
12Open Connection And Log In
13    [Documentation]  Opens a connection with the given arguments, and logs in.
14    ...  Defaults to logging into the BMC.
15    [Arguments]  ${username}=${OPENBMC_USERNAME}
16    ...          ${password}=${OPENBMC_PASSWORD}  &{connection_args}
17
18    # username          The username to log into the connection with.
19    # password          The password to log into the connection with.
20    # connection_args   A dictionary of acceptable inputs to the Open Connection
21    #                   keyword. This includes, but is not limited to, the
22    #                   following:
23    #                   host, alias, port, timeout, newline, prompt, term_type,
24    #                   width, height, path_separator, endcoding
25    #                   (For more information, please visit the SSHLibrary doc)
26
27    #                   Of the above arguments to Open Connection, this keyword
28    #                   will provide the following default values:
29    #                   host             ${OPENBMC_HOST}
30
31    # If no host was provided, add ${OPENBMC_HOST} to the dictionary
32    ${has_host}=  Run Keyword and Return Status
33    ...           Dictionary Should Contain Key  ${connection_args}  host
34    Run Keyword If  ${has_host} == ${FALSE}
35    ...             Set To Dictionary  ${connection_args}  host=${OPENBMC_HOST}
36
37    Run Keyword If
38    ...   '${SSH_PORT}' != '${EMPTY}' and '${HTTPS_PORT}' != '${EMPTY}'
39    ...   User input SSH and HTTPs Ports
40
41    # Check to see if a port to connect to was provided.
42    ${has_port}=  Run Keyword and Return Status
43    ...           Dictionary Should Contain Key  ${connection_args}  port
44
45    # If the ${SSH_PORT} is set and no port was provided, add the defined port
46    # to the dictionary and open the connection. Otherwise, open the connection
47    # with the either the provided port or the default port.
48    Run Keyword If  '${SSH_PORT}' != '${EMPTY}' and ${has_port} == ${FALSE}
49    ...            Run Keywords
50    ...            Set To Dictionary  ${connection_args}  port=${SSH_PORT}  AND
51    ...            SSHLibrary.Open connection  &{connection_args}
52    ...   ELSE  Run Keyword   SSHLibrary.Open connection  &{connection_args}
53
54    Login  ${username}  ${password}
55
56Open Connection for SCP
57    Import Library      SCPLibrary      WITH NAME       scp
58    Run Keyword If  '${SSH_PORT}' == '${EMPTY}'  scp.Open connection  ${OPENBMC_HOST}
59    ...  username=${OPENBMC_USERNAME}  password=${OPENBMC_PASSWORD}
60    ...  ELSE   Run Keyword    scp.Open connection  ${OPENBMC_HOST}  port=${SSH_PORT}
61    ...  username=${OPENBMC_USERNAME}  password=${OPENBMC_PASSWORD}
62
63
64User input SSH and HTTPs Ports
65    [Documentation]   Update the global SSH and HTTPs port variable for QEMU
66    ${port_num}=    Convert To Integer    ${SSH_PORT}
67    ${SSH_PORT}=    Replace Variables     ${port_num}
68
69    ${https_num}=   Convert To Integer    ${HTTPS_PORT}
70    Set Global Variable     ${AUTH_URI}    https://${OPENBMC_HOST}:${https_num}
71