| aravinth0510 | 67b409b | 2022-07-13 10:41:26 +0000 | [diff] [blame] | 1 | *** Settings *** | 
 | 2 | Documentation   Cyber Power Distribution Unit (PDU) library | 
 | 3 |  | 
 | 4 | Resource        ../../lib/pdu/pdu.robot | 
 | 5 | Library         Telnet | 
 | 6 | Library         SSHLibrary | 
 | 7 |  | 
 | 8 | *** Keywords *** | 
 | 9 | Login To Cyber PDU Via SSH | 
 | 10 |     [Documentation]  Open PDU connection and login via SSH. | 
 | 11 |  | 
 | 12 |     Validate Prereq | 
 | 13 |     SSHLibrary.Open Connection  ${PDU_IP} | 
 | 14 |     ${connection_status}=  Run Keyword And Return Status | 
 | 15 |     ...  SSHLibrary.Login  ${PDU_USERNAME}  ${PDU_PASSWORD} | 
 | 16 |     Return From Keyword  ${connection_status} | 
 | 17 |  | 
 | 18 |  | 
 | 19 | Login To Cyber PDU Via Telnet | 
 | 20 |     [Documentation]  Open PDU connection and login via telnet. | 
 | 21 |  | 
 | 22 |     # CyberPowerSystems Inc., Command Shell v1.0 | 
 | 23 |     # Login Name: cyber | 
 | 24 |     # Login_Pass: cyber | 
 | 25 |  | 
 | 26 |     Validate Prereq | 
 | 27 |     Telnet.Open Connection  ${PDU_IP}  timeout=5 | 
 | 28 |     Set Telnetlib Log Level  TRACE | 
 | 29 |     Telnet.Set Newline  \r | 
 | 30 |     Telnet.Write  \n | 
 | 31 |     Telnet.Write  ${PDU_USERNAME} | 
 | 32 |  | 
 | 33 |     Telnet.Read Until  Login_Pass: | 
 | 34 |     Telnet.Write  ${PDU_PASSWORD} | 
 | 35 |  | 
 | 36 | Power Cycle | 
 | 37 |     [Documentation]  Perform PDU power cycle. | 
 | 38 |     [Teardown]  Run Keyword  ${lib_name}.Close All Connections | 
 | 39 |  | 
 | 40 |     ${connection_status}=  Login To Cyber PDU Via SSH | 
 | 41 |  | 
 | 42 |     IF  '${connection_status}' == '${False}' | 
 | 43 |         Set Test Variable  ${lib_name}  Telnet | 
 | 44 |         Login To Cyber PDU Via Telnet | 
 | 45 |     ELSE | 
 | 46 |         Set Test Variable  ${lib_name}  SSHLibrary | 
 | 47 |     END | 
 | 48 |  | 
 | 49 |     #Sample output from cyber PDU console | 
 | 50 |  | 
 | 51 |     # CyberPower System                        ePDU Firmware Version    2.210 | 
 | 52 |     # (c) Copyright 2010 All Rights Reserved   PDU30SWHVT16FNET | 
 | 53 |     # +------- Information -------------------------------------------------------+ | 
 | 54 |     # Name     : PDU30SWHVT16FNET              Date : 07/05/2022 | 
 | 55 |     # Contact  : Administrator                 Time : 22:01:49 | 
 | 56 |     # Location : Server Room                   User : Admin | 
 | 57 |     # Up Time  : 178 days 22 hours 29 mins 11 secs. | 
 | 58 |     # +------- Console -----------------------------------------------------------+ | 
 | 59 |  | 
 | 60 |     #     1- Device Manager | 
 | 61 |     #     2- Network Settings | 
 | 62 |     #     3- System | 
 | 63 |     #     4- Logout | 
 | 64 |  | 
 | 65 |     #     <ESC>- Back, <ENTER>- Select&Reflash | 
 | 66 |     # > 1 | 
 | 67 |  | 
 | 68 |     # +------- PDU30SWHVT16FNET --------------------------------------------------+ | 
 | 69 |  | 
 | 70 |     #     EPDU Information | 
 | 71 |     #     ----------------------------------------------------------------------- | 
 | 72 |     #     Meter or Switch  : Switched          Model Enclosure      : 2U | 
 | 73 |     #     EPDU Orientation : Horizontal        Circuit Breaker      : Yes | 
 | 74 |     #     Bank Number      : 2                 Outlet Number        : 16 | 
 | 75 |     #     ----------------------------------------------------------------------- | 
 | 76 |  | 
 | 77 |     #     1- Load Manager | 
 | 78 |     #     2- Outlet Control | 
 | 79 |     #     3- Outlet Configuration | 
 | 80 |     #     4- Outlet User Management | 
 | 81 |     #     5- See Schedule | 
 | 82 |  | 
 | 83 |     #     <ESC>- Back, <ENTER>- Select&Reflash | 
 | 84 |     # > 2 | 
 | 85 |  | 
 | 86 |     # +------- Outlet Control ----------------------------------------------------+ | 
 | 87 |  | 
 | 88 |     #     Outlet Status: | 
 | 89 |     #     --------------------------------------------------------------------- | 
 | 90 |     #     Outlet Number  :   1   2   3   4   5   6   7   8   9  10  11  12 | 
 | 91 |     #     Current State  :  ON  ON  ON  ON  ON  ON  ON  ON  ON  ON  ON  ON | 
 | 92 |     #     --------------------------------------------------------------------- | 
 | 93 |     #     Outlet Number  :  13  14  15  16  17  18  19  20  21  22  23  24 | 
 | 94 |     #     Current State  :  ON  ON  ON  ON | 
 | 95 |  | 
 | 96 |     #     1- Start a Control Command | 
 | 97 |  | 
 | 98 |     #     <ESC>- Back, <ENTER>- Select&Reflash | 
 | 99 |     # > 1 | 
 | 100 |  | 
 | 101 |         # +------- Command Information: Step 1 ---------------------------------------+ | 
 | 102 |  | 
 | 103 |     #     Step1. Input a Single outlet or outlet list with outlet index #. | 
 | 104 |     #     Note. Separate by symbol ','. | 
 | 105 |  | 
 | 106 |     #     <ESC>- Cancel | 
 | 107 |     # > 13, 14 | 
 | 108 |  | 
 | 109 |     # +------- Command Information: Step 2 ---------------------------------------+ | 
 | 110 |  | 
 | 111 |     #     Selected Outlet: | 
 | 112 |     #     16 | 
 | 113 |  | 
 | 114 |     #     Step2. Select command to execute | 
 | 115 |     #     Selection: | 
 | 116 |     #     1- Turn On Immediate | 
 | 117 |     #     2- Turn Off Immediate | 
 | 118 |     #     3- Reboot Immediate | 
 | 119 |     #     4- Turn On Delay | 
 | 120 |     #     5- Turn Off Delay | 
 | 121 |     #     6- Reboot Delay | 
 | 122 |     #     7- Cancel Pending Command | 
 | 123 |  | 
 | 124 |     #     <ESC>- Cancel | 
 | 125 |     # > | 
 | 126 |  | 
 | 127 |     # +------- Command Information: Step 3 ---------------------------------------+ | 
 | 128 |  | 
 | 129 |     #     Selected Outlet: | 
 | 130 |     #     16 | 
 | 131 |  | 
 | 132 |     #     with Command: | 
 | 133 |     #     Cancel Pending Command | 
 | 134 |  | 
 | 135 |     #     Step3. Confirm your command. | 
 | 136 |     #     Note. Input 'yes' to Execute. | 
 | 137 |  | 
 | 138 |     #     <ESC>- Cancel | 
 | 139 |     # > yes | 
 | 140 |  | 
 | 141 |     # Select 1- Device Manager | 
 | 142 |     Run Keyword  ${lib_name}.Read | 
 | 143 |     Run Keyword  ${lib_name}.Write  1 | 
 | 144 |  | 
 | 145 |     # Select 2- Outlet Control | 
 | 146 |     Run Keyword  ${lib_name}.Read | 
 | 147 |     Run Keyword  ${lib_name}.Write  2 | 
 | 148 |  | 
 | 149 |     @{outlets}=  Split String  ${PDU_SLOT_NO}  separator=, | 
 | 150 |     FOR  ${outlet}  IN  @{outlets} | 
 | 151 |         # Select 1- Start a Control Command | 
 | 152 |         Run Keyword  ${lib_name}.Read | 
 | 153 |         Run Keyword  ${lib_name}.Write  1 | 
 | 154 |  | 
 | 155 |         # Input a Single outlet or outlet list with outlet index # | 
 | 156 |         Run Keyword  ${lib_name}.Read | 
 | 157 |         Run Keyword  ${lib_name}.Write  ${outlet} | 
 | 158 |  | 
 | 159 |         # Select command to execute 3- Reboot Immediate | 
 | 160 |         Run Keyword  ${lib_name}.Read | 
 | 161 |         Run Keyword  ${lib_name}.Write  3 | 
 | 162 |  | 
 | 163 |         # Input 'yes' to Execute | 
 | 164 |         Run Keyword  ${lib_name}.Read | 
 | 165 |         Run Keyword  ${lib_name}.Write  yes | 
 | 166 |         Run Keyword  ${lib_name}.Read | 
 | 167 |     END | 
 | 168 |  | 
 | 169 |     # Send ESC over telnet console and Select 4- Logout | 
 | 170 |     ${esc}=  Evaluate  chr(int(27)) | 
 | 171 |     Set Test Variable  ${retry_count}  ${10} | 
 | 172 |     FOR  ${try}  IN RANGE  ${retry_count} | 
 | 173 |         Run Keyword  ${lib_name}.Write Bare  ${esc} | 
 | 174 |         ${cmd_out}=  Run Keyword  ${lib_name}.Read | 
 | 175 |         ${check}=  Run Keyword And Return Status  Should Contain  ${cmd_out}  4- Logout | 
 | 176 |         Continue For Loop If  ${check}==${FALSE} | 
 | 177 |         Run Keyword If  ${check}==${TRUE}  Run Keywords | 
 | 178 |         ...  Run Keyword  ${lib_name}.Write  4  AND | 
 | 179 |         ...  Run Keyword  ${lib_name}.Read  AND | 
 | 180 |         ...  ${lib_name}.Close All Connections  AND | 
 | 181 |         ...  Exit For Loop | 
 | 182 |     END |