NAME
DracPerl::Client - API Client for Dell's management interface (iDRAC)
AUTHOR
Jules Decol - @Apcros
SYNOPSIS
A client to interact with the iDRAC API on Dell Poweredge servers
# Create the client
my $drac_client = DracPerl::Client->new({
user => "username",
password => "password",
url => "https://dracip",
});
# Get what you're interested in
# Login is done implicitly, you can save and resume sessions. See below
my $parsed_xml = $drac_client->get({ commands => ['fans']});
DESCRIPTION
WHY ?
This been created because I find the web interface of iDrac slow and far from being easy to use. I have the project of creating a full new iDrac front-end, but of course that project required an API Client. Because this is something that seem to be quite lacking in the PowerEdge community, I made a standalone repo/project for that :)
PITFALLS
The DRAC API this client is exploiting is meant to be used only by the DRAC front-end and therefore comes with it loads of weirdness.
- A lot of fields have trailing whitespace in them (Possible update coming soon to clean theses) - When no data is available some fields will be empty, some will be 'N/A', there seem to be no consistency there - Some fields are padded (See DracPerl::Models::Abstract::PhysicalDisk )
Please note that depending on your network config you might have trouble accessing DRAC from the server itself. (If you are inside a VM running on the Dell server for example)
OBJECT ARGUMENTS
max_retries
Login can be extremely capricious, Max retries avoid being too annoyed by that. Defaulted to 5.
METHODS
get
Will return a hash containing models of all the methods or collection you called.
my $result = $drac_client->get({
commands => ['fans'],
collections => ['lcd']
});
# $result will contain :
{
fans => .. #DracPerl::Models::Commands::DellDefault::Fans,
lcd => .. #DracPerl::Models::Commands::Collection::LCD
}
openSession
Can be called explicitly or is called by default if get is called and no session is available You can pass it a saved session in order to restore it.
$drac_client->openSession($saved_session) #Will restore a session
$drac_client->openSession() #Will open a new one
saveSession
This will return the current session. (Basically the token and the cookie jar).
closeSession
Invalidate the current session
isAlive
Check with a quick api call if your current session is still useable.
COMMANDS
A command is a single field defined by the DRAC API. They can be send in the "commands" hash key on the get method
Here's the list of supported commands :
batteries - DracPerl::Models::Commands::DellDefault::Batteries
eventLogEntries - DracPerl::Models::Commands::DellDefault::EventLogEntries
racLogEntries - DracPerl::Models::Commands::DellDefault::RacLogEntries
fans - DracPerl::Models::Commands::DellDefault::Fans
fansRedundancy - DracPerl::Models::Commands::DellDefault::FansRedundancy
getInv - DracPerl::Models::Commands::DellDefault::GetInv
intrusion - DracPerl::Models::Commands::DellDefault::Intrusion
powerSupplies - DracPerl::Models::Commands::DellDefault::PowerSupplies
temperatures - DracPerl::Models::Commands::DellDefault::Temperatures
voltages - DracPerl::Models::Commands::DellDefault::Voltages
COLLECTIONS
Collections are groups of field. This is not a Dell terminology. This was created because some interfaces pages (LCD information for example) will need several commands and the commands themselves are too small to justify having a standalone model for them.
systemInformations - DracPerl::Models::Commands::Collection::SystemInformations