| 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 |