blob: 3788d3dc62e40b5de500a2b457563457056b62bc [file] [log] [blame]
*** Settings ***
Documentation Cyber Power Distribution Unit (PDU) library
Resource ../../lib/pdu/pdu.robot
Library Telnet
Library SSHLibrary
*** Keywords ***
Login To Cyber PDU Via SSH
[Documentation] Open PDU connection and login via SSH.
Validate Prereq
SSHLibrary.Open Connection ${PDU_IP}
${connection_status}= Run Keyword And Return Status
... SSHLibrary.Login ${PDU_USERNAME} ${PDU_PASSWORD}
Return From Keyword ${connection_status}
Login To Cyber PDU Via Telnet
[Documentation] Open PDU connection and login via telnet.
# CyberPowerSystems Inc., Command Shell v1.0
# Login Name: cyber
# Login_Pass: cyber
Validate Prereq
Telnet.Open Connection ${PDU_IP} timeout=5
Set Telnetlib Log Level TRACE
Telnet.Set Newline \r
Telnet.Write \n
Telnet.Write ${PDU_USERNAME}
Telnet.Read Until Login_Pass:
Telnet.Write ${PDU_PASSWORD}
Power Cycle
[Documentation] Perform PDU power cycle.
[Teardown] Run Keyword ${lib_name}.Close All Connections
${connection_status}= Login To Cyber PDU Via SSH
IF '${connection_status}' == '${False}'
Set Test Variable ${lib_name} Telnet
Login To Cyber PDU Via Telnet
ELSE
Set Test Variable ${lib_name} SSHLibrary
END
#Sample output from cyber PDU console
# CyberPower System ePDU Firmware Version 2.210
# (c) Copyright 2010 All Rights Reserved PDU30SWHVT16FNET
# +------- Information -------------------------------------------------------+
# Name : PDU30SWHVT16FNET Date : 07/05/2022
# Contact : Administrator Time : 22:01:49
# Location : Server Room User : Admin
# Up Time : 178 days 22 hours 29 mins 11 secs.
# +------- Console -----------------------------------------------------------+
# 1- Device Manager
# 2- Network Settings
# 3- System
# 4- Logout
# <ESC>- Back, <ENTER>- Select&Reflash
# > 1
# +------- PDU30SWHVT16FNET --------------------------------------------------+
# EPDU Information
# -----------------------------------------------------------------------
# Meter or Switch : Switched Model Enclosure : 2U
# EPDU Orientation : Horizontal Circuit Breaker : Yes
# Bank Number : 2 Outlet Number : 16
# -----------------------------------------------------------------------
# 1- Load Manager
# 2- Outlet Control
# 3- Outlet Configuration
# 4- Outlet User Management
# 5- See Schedule
# <ESC>- Back, <ENTER>- Select&Reflash
# > 2
# +------- Outlet Control ----------------------------------------------------+
# Outlet Status:
# ---------------------------------------------------------------------
# Outlet Number : 1 2 3 4 5 6 7 8 9 10 11 12
# Current State : ON ON ON ON ON ON ON ON ON ON ON ON
# ---------------------------------------------------------------------
# Outlet Number : 13 14 15 16 17 18 19 20 21 22 23 24
# Current State : ON ON ON ON
# 1- Start a Control Command
# <ESC>- Back, <ENTER>- Select&Reflash
# > 1
# +------- Command Information: Step 1 ---------------------------------------+
# Step1. Input a Single outlet or outlet list with outlet index #.
# Note. Separate by symbol ','.
# <ESC>- Cancel
# > 13, 14
# +------- Command Information: Step 2 ---------------------------------------+
# Selected Outlet:
# 16
# Step2. Select command to execute
# Selection:
# 1- Turn On Immediate
# 2- Turn Off Immediate
# 3- Reboot Immediate
# 4- Turn On Delay
# 5- Turn Off Delay
# 6- Reboot Delay
# 7- Cancel Pending Command
# <ESC>- Cancel
# >
# +------- Command Information: Step 3 ---------------------------------------+
# Selected Outlet:
# 16
# with Command:
# Cancel Pending Command
# Step3. Confirm your command.
# Note. Input 'yes' to Execute.
# <ESC>- Cancel
# > yes
# Select 1- Device Manager
Run Keyword ${lib_name}.Read
Run Keyword ${lib_name}.Write 1
# Select 2- Outlet Control
Run Keyword ${lib_name}.Read
Run Keyword ${lib_name}.Write 2
@{outlets}= Split String ${PDU_SLOT_NO} separator=,
FOR ${outlet} IN @{outlets}
# Select 1- Start a Control Command
Run Keyword ${lib_name}.Read
Run Keyword ${lib_name}.Write 1
# Input a Single outlet or outlet list with outlet index #
Run Keyword ${lib_name}.Read
Run Keyword ${lib_name}.Write ${outlet}
# Select command to execute 3- Reboot Immediate
Run Keyword ${lib_name}.Read
Run Keyword ${lib_name}.Write 3
# Input 'yes' to Execute
Run Keyword ${lib_name}.Read
Run Keyword ${lib_name}.Write yes
Run Keyword ${lib_name}.Read
END
# Send ESC over telnet console and Select 4- Logout
${esc}= Evaluate chr(int(27))
Set Test Variable ${retry_count} ${10}
FOR ${try} IN RANGE ${retry_count}
Run Keyword ${lib_name}.Write Bare ${esc}
${cmd_out}= Run Keyword ${lib_name}.Read
${check}= Run Keyword And Return Status Should Contain ${cmd_out} 4- Logout
Continue For Loop If ${check}==${FALSE}
Run Keyword If ${check}==${TRUE} Run Keywords
... Run Keyword ${lib_name}.Write 4 AND
... Run Keyword ${lib_name}.Read AND
... ${lib_name}.Close All Connections AND
... Exit For Loop
END