Implementation of the DMTF Redfish API on Dell PowerEdge Servers
Dell-PowerEdge-Redfish-API-Overview
Dell-PowerEdge-Redfish-API-Overview
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<str<strong>on</strong>g>Implementati<strong>on</strong></str<strong>on</strong>g> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
<str<strong>on</strong>g>DMTF</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> <strong>on</strong><br />
<strong>Dell</strong> <strong>PowerEdge</strong> <strong>Servers</strong><br />
Versi<strong>on</strong> 1.0<br />
March 2016<br />
J<strong>on</strong>as Werner, Sr. Soluti<strong>on</strong> Architect<br />
<strong>Dell</strong> Customer Soluti<strong>on</strong> Centers<br />
P. Raveendra Reddy, Platform S<str<strong>on</strong>g>of</str<strong>on</strong>g>tware Staff Engineer<br />
<strong>Dell</strong> System Management Engineering<br />
Paul Rubin, Sr. Product Manager<br />
<strong>Dell</strong> Systems Management Marketing<br />
<strong>Dell</strong> | Enterprise Soluti<strong>on</strong>s Group<br />
1 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Table <str<strong>on</strong>g>of</str<strong>on</strong>g> c<strong>on</strong>tents<br />
Executive summary .......................................................................................................................................................................... 4<br />
Introducti<strong>on</strong> ....................................................................................................................................................................................... 5<br />
The <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Management Standard .............................................................................................................................................. 6<br />
Next-generati<strong>on</strong> server management .................................................................................................................................. 6<br />
Rack, multi-node, and nested chassis ................................................................................................................................... 7<br />
Keeping up with changes in IT philosophy ........................................................................................................................... 7<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> key technologies ........................................................................................................................................................ 7<br />
HTTPS communicati<strong>on</strong>s ........................................................................................................................................................... 7<br />
RESTful applicati<strong>on</strong> programming interface ......................................................................................................................... 7<br />
JSON data ................................................................................................................................................................................... 8<br />
OData ........................................................................................................................................................................................... 8<br />
Eventing ....................................................................................................................................................................................... 8<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Operati<strong>on</strong>al Model ..................................................................................................................................................... 9<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Client ............................................................................................................................................................................. 9<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Architecture .............................................................................................................................................................. 10<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> tree structure .............................................................................................................................................................. 10<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Operati<strong>on</strong>s ................................................................................................................................................................... 11<br />
Au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong> ........................................................................................................................................................................... 11<br />
Privileges.................................................................................................................................................................................... 12<br />
Using <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> <strong>on</strong> <strong>PowerEdge</strong> systems .......................................................................................................................... 13<br />
Web browser access ............................................................................................................................................................... 13<br />
Accessing <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> by using <str<strong>on</strong>g>the</str<strong>on</strong>g> cURL applicati<strong>on</strong> ........................................................................................................... 15<br />
Using cURL with au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong>............................................................................................................................................ 16<br />
Accessing <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> by using Pyth<strong>on</strong> scripting ................................................................................................................... 16<br />
View general system informati<strong>on</strong> and status ...................................................................................................................... 16<br />
View system health across multiple servers........................................................................................................................ 18<br />
View system event log ............................................................................................................................................................ 18<br />
Check system power state ..................................................................................................................................................... 19<br />
Power <strong>on</strong> a system .................................................................................................................................................................. 19<br />
Power <str<strong>on</strong>g>of</str<strong>on</strong>g>f a system .................................................................................................................................................................. 19<br />
View system power usage ...................................................................................................................................................... 20<br />
2 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Update general System Informati<strong>on</strong> with PATCH operati<strong>on</strong> ........................................................................................... 20<br />
Change boot device temporarily .......................................................................................................................................... 21<br />
Update / modify iDRAC user account .................................................................................................................................. 22<br />
Extended Informati<strong>on</strong> ............................................................................................................................................................. 22<br />
Summary .......................................................................................................................................................................................... 24<br />
<strong>Dell</strong> Customer Soluti<strong>on</strong> Centers .................................................................................................................................................. 25<br />
Additi<strong>on</strong>al Informati<strong>on</strong> ................................................................................................................................................................... 26<br />
Acr<strong>on</strong>yms .................................................................................................................................................................................. 26<br />
Definiti<strong>on</strong>s ................................................................................................................................................................................ 27<br />
THIS WHITE PAPER IS FOR INFORMATIONAL PURPOSES ONLY, AND MAY CONTAIN TYPOGRAPHICAL ERRORS AND TECHNICAL INACCURACIES. THE CONTENT IS<br />
PROVIDED AS IS, WITHOUT EXPRESS OR IMPLIED WARRANTIES OF ANY KIND.<br />
Copyright © 2016 <strong>Dell</strong> Inc. All rights reserved. <strong>Dell</strong> and <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> logo are trademarks <str<strong>on</strong>g>of</str<strong>on</strong>g> <strong>Dell</strong> Inc. in <str<strong>on</strong>g>the</str<strong>on</strong>g> United States and/or o<str<strong>on</strong>g>the</str<strong>on</strong>g>r jurisdicti<strong>on</strong>s. All o<str<strong>on</strong>g>the</str<strong>on</strong>g>r marks and names<br />
menti<strong>on</strong>ed herein may be trademarks <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g>ir respective companies.<br />
March 2016 | Versi<strong>on</strong> 1.0<br />
3 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Executive summary<br />
The growing scale <str<strong>on</strong>g>of</str<strong>on</strong>g> cloud- and web-based data center infrastructure is reshaping <str<strong>on</strong>g>the</str<strong>on</strong>g> needs <str<strong>on</strong>g>of</str<strong>on</strong>g> IT administrators<br />
world-wide. New approaches to systems management are needed to keep up with a growing and changing market.<br />
The Distributed Management Task Force (<str<strong>on</strong>g>DMTF</str<strong>on</strong>g>) Scalable Platforms Management Forum (SPMF) has published <str<strong>on</strong>g>Redfish</str<strong>on</strong>g>,<br />
an open industry-standard specificati<strong>on</strong> and schema designed to meet <str<strong>on</strong>g>the</str<strong>on</strong>g> needs <str<strong>on</strong>g>of</str<strong>on</strong>g> IT administrators for simple,<br />
modern, and secure management <str<strong>on</strong>g>of</str<strong>on</strong>g> scalable platform hardware. <strong>Dell</strong> is a key c<strong>on</strong>tributor to <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> standard,<br />
acting as co-chair <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> SPMF, promoting <str<strong>on</strong>g>the</str<strong>on</strong>g> benefits <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g>, and working to deliver those benefits within <strong>Dell</strong><br />
industry-leading systems management soluti<strong>on</strong>s.<br />
This document provides an overview <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Scalable Platforms Management <str<strong>on</strong>g>API</str<strong>on</strong>g> standard and describes <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
<strong>Dell</strong> implementati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> for <strong>Dell</strong>’s 12 th and 13 th generati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <strong>PowerEdge</strong> servers, delivered by <str<strong>on</strong>g>the</str<strong>on</strong>g> integrated<br />
<strong>Dell</strong> Remote Access C<strong>on</strong>troller (iDRAC) with Lifecycle C<strong>on</strong>troller.<br />
4 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Introducti<strong>on</strong><br />
Since <str<strong>on</strong>g>the</str<strong>on</strong>g> incepti<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> x86 server in <str<strong>on</strong>g>the</str<strong>on</strong>g> late 1980’s, IT administrators have sought <str<strong>on</strong>g>the</str<strong>on</strong>g> means to efficiently manage<br />
a growing number <str<strong>on</strong>g>of</str<strong>on</strong>g> distributed resources. Industry suppliers have resp<strong>on</strong>ded by developing management interface<br />
standards to support comm<strong>on</strong> methods <str<strong>on</strong>g>of</str<strong>on</strong>g> m<strong>on</strong>itoring and c<strong>on</strong>trolling heterogeneous systems.<br />
While management interfaces such as SNMP and IPMI have been present in data centers for <str<strong>on</strong>g>the</str<strong>on</strong>g> past decade, <str<strong>on</strong>g>the</str<strong>on</strong>g>y<br />
have not been able to meet <str<strong>on</strong>g>the</str<strong>on</strong>g> changing requirements due to security and technical limitati<strong>on</strong>s.<br />
Fur<str<strong>on</strong>g>the</str<strong>on</strong>g>r, <str<strong>on</strong>g>the</str<strong>on</strong>g> scale <str<strong>on</strong>g>of</str<strong>on</strong>g> deployment has grown significantly as IT models have evolved. Today, organizati<strong>on</strong>s <str<strong>on</strong>g>of</str<strong>on</strong>g>ten rely <strong>on</strong><br />
a large number <str<strong>on</strong>g>of</str<strong>on</strong>g> lower-cost servers with redundancy provided in <str<strong>on</strong>g>the</str<strong>on</strong>g> s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware layer, making scalable management<br />
interfaces more critical.<br />
To meet such market requirements, a new, unifying management standard was needed.<br />
This document describes <str<strong>on</strong>g>Redfish</str<strong>on</strong>g>—a next generati<strong>on</strong> management standard using a data model representati<strong>on</strong> inside<br />
a hypermedia RESTful interface. The data model is defined in terms <str<strong>on</strong>g>of</str<strong>on</strong>g> a standard, machine-readable schema, with <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
payload <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> messages expressed in JSON and <str<strong>on</strong>g>the</str<strong>on</strong>g> protocol using OData v4. Because it is a hypermedia <str<strong>on</strong>g>API</str<strong>on</strong>g>, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g><br />
is capable <str<strong>on</strong>g>of</str<strong>on</strong>g> representing a variety <str<strong>on</strong>g>of</str<strong>on</strong>g> implementati<strong>on</strong>s by using a c<strong>on</strong>sistent interface. It has mechanisms for<br />
discovering and managing data center resources, handling events, and managing l<strong>on</strong>g-lived tasks.<br />
<strong>Dell</strong> is enhancing its leading systems management capabilities with <str<strong>on</strong>g>the</str<strong>on</strong>g> introducti<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> support <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
integrated <strong>Dell</strong> Remote Access C<strong>on</strong>troller (iDRAC) with Lifecycle C<strong>on</strong>troller. This white paper provides <str<strong>on</strong>g>the</str<strong>on</strong>g> required<br />
informati<strong>on</strong> to create <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> clients or use existing REST clients to deliver <str<strong>on</strong>g>the</str<strong>on</strong>g> benefits <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> <strong>on</strong><br />
<strong>PowerEdge</strong> servers. This document can also be used to help legacy management c<strong>on</strong>soles support or enable <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> standard.<br />
5 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
The <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Management Standard<br />
There are various Out-<str<strong>on</strong>g>of</str<strong>on</strong>g>-Band (OOB) systems management standards available in <str<strong>on</strong>g>the</str<strong>on</strong>g> industry today. However, <str<strong>on</strong>g>the</str<strong>on</strong>g>re<br />
is no single standard that can be easily used within emerging programming standards, can be readily implemented<br />
within embedded systems, and can meet <str<strong>on</strong>g>the</str<strong>on</strong>g> demands <str<strong>on</strong>g>of</str<strong>on</strong>g> today’s evolving IT soluti<strong>on</strong> models.<br />
New IT soluti<strong>on</strong>s models have placed new demands <strong>on</strong> systems management soluti<strong>on</strong>s to support expanded scale,<br />
higher security and multi-vendor openness while also aligning with modern DevOps tools and processes.<br />
Recognizing <str<strong>on</strong>g>the</str<strong>on</strong>g>se needs, <strong>Dell</strong> and o<str<strong>on</strong>g>the</str<strong>on</strong>g>r IT soluti<strong>on</strong>s leaders within <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>DMTF</str<strong>on</strong>g> undertook <str<strong>on</strong>g>the</str<strong>on</strong>g> creati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> a new<br />
management interface standard. After a multi-year effort, <str<strong>on</strong>g>the</str<strong>on</strong>g> new standard, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> v1.0, was announced in July,<br />
2015.<br />
Its key benefits include:<br />
<br />
<br />
<br />
<br />
<br />
Increased simplicity and usability<br />
Encrypted c<strong>on</strong>necti<strong>on</strong>s and generally heightened security<br />
A programmatic interface that can easily be c<strong>on</strong>trolled through scripts<br />
Ability to meet <str<strong>on</strong>g>the</str<strong>on</strong>g> Open Compute Project’s Remote Machine Management requirements<br />
Based <strong>on</strong> widely-used standards for web <str<strong>on</strong>g>API</str<strong>on</strong>g>s and data formats<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> has been designed to support <str<strong>on</strong>g>the</str<strong>on</strong>g> full range <str<strong>on</strong>g>of</str<strong>on</strong>g> server architectures from m<strong>on</strong>olithic servers to c<strong>on</strong>verged<br />
infrastructure and hyper-scale architecture. The <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> data model, which defines <str<strong>on</strong>g>the</str<strong>on</strong>g> structure and format <str<strong>on</strong>g>of</str<strong>on</strong>g> data<br />
representing server status, inventory and available operati<strong>on</strong>al functi<strong>on</strong>s, is vendor-neutral. Administrators can <str<strong>on</strong>g>the</str<strong>on</strong>g>n<br />
create management automati<strong>on</strong> scripts that can manage any <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> compliant server. This is crucial for <str<strong>on</strong>g>the</str<strong>on</strong>g> efficient<br />
operati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> a heterog<strong>on</strong>ous server fleet.<br />
Using <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> also has significant security benefits—unlike legacy management protocols, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> utilizes HTTPS<br />
encrypti<strong>on</strong> for secure and reliable communicati<strong>on</strong>. All <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> network traffic, including event notificati<strong>on</strong>s, can be<br />
sent encrypted across <str<strong>on</strong>g>the</str<strong>on</strong>g> network.<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> provides a highly organized and easily accessible method to interact with a server using scripting tools. The<br />
web interface employed by <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> is supported by many programming languages, and its tree-like structure makes<br />
informati<strong>on</strong> easier to locate. Data returned from a <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> query can be turned into a searchable dicti<strong>on</strong>ary c<strong>on</strong>sisting<br />
<str<strong>on</strong>g>of</str<strong>on</strong>g> key-value-pairs. By looking at <str<strong>on</strong>g>the</str<strong>on</strong>g> values in <str<strong>on</strong>g>the</str<strong>on</strong>g> dicti<strong>on</strong>ary, it is easy to locate settings and current status <str<strong>on</strong>g>of</str<strong>on</strong>g> a <str<strong>on</strong>g>Redfish</str<strong>on</strong>g><br />
managed system. These settings can <str<strong>on</strong>g>the</str<strong>on</strong>g>n be updated and acti<strong>on</strong>s issued to <strong>on</strong>e or multiple systems.<br />
Next-generati<strong>on</strong> server management<br />
The <str<strong>on</strong>g>DMTF</str<strong>on</strong>g> white paper <strong>on</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g>, DSP2044, talks about <str<strong>on</strong>g>the</str<strong>on</strong>g> need to move away from managing servers as individual<br />
“pets”. Ra<str<strong>on</strong>g>the</str<strong>on</strong>g>r, administrators should begin to treat <str<strong>on</strong>g>the</str<strong>on</strong>g>ir servers more as “cattle” and manage <str<strong>on</strong>g>the</str<strong>on</strong>g>m as “herds”. While in<br />
<str<strong>on</strong>g>the</str<strong>on</strong>g> past, IT staff could spend time to adapt <str<strong>on</strong>g>the</str<strong>on</strong>g>ir management methods to match a smaller number <str<strong>on</strong>g>of</str<strong>on</strong>g> servers, <str<strong>on</strong>g>the</str<strong>on</strong>g>y<br />
now have many more servers and much less time. Managing a large and growing infrastructure requires <str<strong>on</strong>g>the</str<strong>on</strong>g> capability<br />
to issue commands at scale with <str<strong>on</strong>g>the</str<strong>on</strong>g> expectati<strong>on</strong> that <str<strong>on</strong>g>the</str<strong>on</strong>g> “herd” will follow regardless <str<strong>on</strong>g>of</str<strong>on</strong>g> make or model <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
individual servers.<br />
6 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Rack, multi-node, and nested chassis<br />
Ano<str<strong>on</strong>g>the</str<strong>on</strong>g>r limitati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> legacy management standards is an implied understanding that <strong>on</strong>e management endpoint such<br />
as a Baseboard Management C<strong>on</strong>troller or BMC means <strong>on</strong>e server. Modern c<strong>on</strong>verged server infrastructure such as<br />
<str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>PowerEdge</strong> M1000e and FX2 are becoming more prevalent, invalidating this assumpti<strong>on</strong>. <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> explicitly<br />
addresses c<strong>on</strong>verged infrastructure and rack-level management with modeling that can scale for <str<strong>on</strong>g>the</str<strong>on</strong>g> management <str<strong>on</strong>g>of</str<strong>on</strong>g><br />
multiple nodes, nested chassis, and server blades within a larger, actively managed enclosure.<br />
Keeping up with changes in IT philosophy<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> has taken into account <str<strong>on</strong>g>the</str<strong>on</strong>g> recent changes in <str<strong>on</strong>g>the</str<strong>on</strong>g> IT field. These changes include not <strong>on</strong>ly new types <str<strong>on</strong>g>of</str<strong>on</strong>g><br />
hardware but also important changes in IT philosophy that are impacting how administrators expect to manage <str<strong>on</strong>g>the</str<strong>on</strong>g>ir<br />
infrastructure.<br />
Organizati<strong>on</strong>s are now looking for open management soluti<strong>on</strong>s that can be c<strong>on</strong>trolled in <str<strong>on</strong>g>the</str<strong>on</strong>g> same way <str<strong>on</strong>g>the</str<strong>on</strong>g>y c<strong>on</strong>trol<br />
o<str<strong>on</strong>g>the</str<strong>on</strong>g>r resources, irrespective <str<strong>on</strong>g>of</str<strong>on</strong>g> whe<str<strong>on</strong>g>the</str<strong>on</strong>g>r <str<strong>on</strong>g>the</str<strong>on</strong>g> resources are located in a cloud or in a data center. By adopting data<br />
structures and access methods as used for cloud- and web-based infrastructure, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> will enable management<br />
methods aligned with modern IT infrastructure. Utilizing a modern data model and RESTful <str<strong>on</strong>g>API</str<strong>on</strong>g>, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> can be readily<br />
integrated with <str<strong>on</strong>g>the</str<strong>on</strong>g> IT automati<strong>on</strong> tools and processes employed by DevOps practices, a key requirement in many IT<br />
organizati<strong>on</strong>s.<br />
System administrators can use <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> to manage heterogeneous server fleets more efficiently throughout <str<strong>on</strong>g>the</str<strong>on</strong>g> server<br />
lifecycle— from bare metal deployments to maintenance and repurposing. Using a simple and powerful interface that<br />
supports modern automati<strong>on</strong> technologies, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> can speed time-to-soluti<strong>on</strong> for IT developers.<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> key technologies<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> is a RESTful interface over HTTPS in JSON format based <strong>on</strong> ODATA v4 usable by clients, scripts, and browserbased<br />
GUIs. It utilizes a range <str<strong>on</strong>g>of</str<strong>on</strong>g> IT technologies that have been selected because <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g>ir widespread use. By adopting<br />
<str<strong>on</strong>g>the</str<strong>on</strong>g>se accepted technologies, administrators will find it easier to use <str<strong>on</strong>g>Redfish</str<strong>on</strong>g>. Taken toge<str<strong>on</strong>g>the</str<strong>on</strong>g>r, <str<strong>on</strong>g>the</str<strong>on</strong>g>se technologies<br />
create a new foundati<strong>on</strong> from which servers can be managed using comm<strong>on</strong> programming and scripting languages,<br />
such as Pyth<strong>on</strong>, Java and C.<br />
HTTPS communicati<strong>on</strong>s<br />
The Hypertext Transfer Protocol or HTTP is an applicati<strong>on</strong> protocol for distributed, collaborative, hypermedia<br />
informati<strong>on</strong> systems and forms <str<strong>on</strong>g>the</str<strong>on</strong>g> foundati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> data communicati<strong>on</strong> for <str<strong>on</strong>g>the</str<strong>on</strong>g> World Wide Web. Secure HTTP or<br />
HTTPS is a secure versi<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> HTTP that enables secure communicati<strong>on</strong>s by operating HTTP within a network<br />
c<strong>on</strong>necti<strong>on</strong> encrypted by TLS or SSL. By utilizing HTTPS, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> significantly enhances <str<strong>on</strong>g>the</str<strong>on</strong>g> security <str<strong>on</strong>g>of</str<strong>on</strong>g> server<br />
management especially in comparis<strong>on</strong> to legacy server management protocols.<br />
RESTful applicati<strong>on</strong> programming interface<br />
REpresentati<strong>on</strong>al State Transfer or REST is a s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware architectural style used within <str<strong>on</strong>g>the</str<strong>on</strong>g> World Wide Web. Since 2000,<br />
when representati<strong>on</strong>al state transfer was introduced and defined by Roy Fielding in his University <str<strong>on</strong>g>of</str<strong>on</strong>g> California Irvine<br />
doctoral dissertati<strong>on</strong>, REST has been applied for a range <str<strong>on</strong>g>of</str<strong>on</strong>g> purposes including <str<strong>on</strong>g>the</str<strong>on</strong>g> definiti<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> web-based <str<strong>on</strong>g>API</str<strong>on</strong>g>s.<br />
Systems that adhere to REST practices are <str<strong>on</strong>g>of</str<strong>on</strong>g>ten referred to as RESTful interfaces and typically use <str<strong>on</strong>g>the</str<strong>on</strong>g> HTTP Methods<br />
7 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
(GET, POST, DELETE, and more) that web browsers use to access web pages. RESTful architectures are now<br />
comm<strong>on</strong>ly used by many IT soluti<strong>on</strong>s. Leveraging this standardized approach, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> implements a RESTful <str<strong>on</strong>g>API</str<strong>on</strong>g> for<br />
accessing management informati<strong>on</strong> and for issuing commands to change <str<strong>on</strong>g>the</str<strong>on</strong>g> c<strong>on</strong>figurati<strong>on</strong> or operati<strong>on</strong>al state <str<strong>on</strong>g>of</str<strong>on</strong>g> a<br />
server.<br />
JSON data<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> represents data using JSON. JSON is a lightweight data-interchange format that is easy for people to read and<br />
write and also for machines to parse. JSON is based <strong>on</strong> a subset <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> JavaScript Programming Language, using a text<br />
format that is completely language independent but uses c<strong>on</strong>venti<strong>on</strong>s familiar to programmers <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> C-family <str<strong>on</strong>g>of</str<strong>on</strong>g><br />
languages such as C, C++, C#, Java, JavaScript, Perl, and Pyth<strong>on</strong>. These properties make JSON an ideal datainterchange<br />
language.<br />
OData<br />
OData is an open protocol standard for <str<strong>on</strong>g>the</str<strong>on</strong>g> definiti<strong>on</strong> and exchange <str<strong>on</strong>g>of</str<strong>on</strong>g> informati<strong>on</strong> using RESTful <str<strong>on</strong>g>API</str<strong>on</strong>g>s. OData was<br />
originally created in 2007 by Micros<str<strong>on</strong>g>of</str<strong>on</strong>g>t and subsequently standardized by <str<strong>on</strong>g>the</str<strong>on</strong>g> OASIS standards body. When<br />
implementing a comm<strong>on</strong> interface across multiple vendors, it becomes important to standardize <str<strong>on</strong>g>the</str<strong>on</strong>g> data formats.<br />
OData provides <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> required framework to ensure that <str<strong>on</strong>g>the</str<strong>on</strong>g> data structures remain interchangeable between<br />
server vendors.<br />
Eventing<br />
The <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> v1.0 specificati<strong>on</strong> includes support for eventing that enables <str<strong>on</strong>g>the</str<strong>on</strong>g> notificati<strong>on</strong> to a management client <str<strong>on</strong>g>of</str<strong>on</strong>g><br />
significant events occurring in a server. <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> provides push style event notificati<strong>on</strong>s to an event listener, defined as a<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> compliant HTTPS server. The listener subscribes to <str<strong>on</strong>g>the</str<strong>on</strong>g> events <str<strong>on</strong>g>of</str<strong>on</strong>g> interest based <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> event types defined in<br />
<str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> specificati<strong>on</strong>. Event subscripti<strong>on</strong>s remain in place until specifically deleted or until <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> manager<br />
such as iDRAC is reset to its default c<strong>on</strong>figurati<strong>on</strong>.<br />
Up<strong>on</strong> receiving an event subscripti<strong>on</strong> request, iDRAC will add <str<strong>on</strong>g>the</str<strong>on</strong>g> hostname <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> requestor to <str<strong>on</strong>g>the</str<strong>on</strong>g> list <str<strong>on</strong>g>of</str<strong>on</strong>g> targets to be<br />
notified when <str<strong>on</strong>g>the</str<strong>on</strong>g> event occurs. In <str<strong>on</strong>g>the</str<strong>on</strong>g> initial iDRAC <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> implementati<strong>on</strong>, all events are categorized under <str<strong>on</strong>g>the</str<strong>on</strong>g> Alert<br />
Event Type with a maximum <str<strong>on</strong>g>of</str<strong>on</strong>g> 20 event subscripti<strong>on</strong>s per event listener. If delivery <str<strong>on</strong>g>of</str<strong>on</strong>g> an event notificati<strong>on</strong> fails, <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
event service will retry delivery. The parameters for re-delivery are c<strong>on</strong>figurable.<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> events are delivered <strong>on</strong>ly over HTTPS transport. In <str<strong>on</strong>g>the</str<strong>on</strong>g> initial iDRAC <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> implementati<strong>on</strong>, HTTPS certificates<br />
are disabled; this requires <str<strong>on</strong>g>the</str<strong>on</strong>g> event listener to support receiving event notificati<strong>on</strong>s without certificate validati<strong>on</strong>.<br />
Eventing with certificate support is planned for a future release.<br />
8 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Operati<strong>on</strong>al Model<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> operati<strong>on</strong>s are initiated by a client using HTTPS for GET, POST, PATCH and DELETE operati<strong>on</strong>s and capable <str<strong>on</strong>g>of</str<strong>on</strong>g><br />
interpreting <str<strong>on</strong>g>the</str<strong>on</strong>g> JSON resp<strong>on</strong>ses from <str<strong>on</strong>g>the</str<strong>on</strong>g> managed server. The resp<strong>on</strong>ses provide <str<strong>on</strong>g>the</str<strong>on</strong>g> requested informati<strong>on</strong> and<br />
indicati<strong>on</strong>s <str<strong>on</strong>g>of</str<strong>on</strong>g> success or failure <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> requested operati<strong>on</strong>.<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Client<br />
Managed <strong>Servers</strong><br />
Management<br />
Network<br />
iDRAC<br />
GET https:///redfish/v1/…<br />
JSON resp<strong>on</strong>se<br />
POST https:///redfish/v1/…<br />
JSON resp<strong>on</strong>se<br />
Figure 1<br />
- <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Operati<strong>on</strong>al Model<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Client<br />
The REST principle <str<strong>on</strong>g>of</str<strong>on</strong>g> "Everything is a Resource" means that every Uniform Resource Identifier or URI represents a<br />
resource <str<strong>on</strong>g>of</str<strong>on</strong>g> a specific type. This can be a service, a collecti<strong>on</strong>, an entity or some o<str<strong>on</strong>g>the</str<strong>on</strong>g>r c<strong>on</strong>struct. In <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g><br />
c<strong>on</strong>text, a resource can be thought <str<strong>on</strong>g>of</str<strong>on</strong>g> as <str<strong>on</strong>g>the</str<strong>on</strong>g> c<strong>on</strong>tent <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> HTTP message returned when accessing a URI. A variety<br />
<str<strong>on</strong>g>of</str<strong>on</strong>g> REST Clients can be used for gaining access to <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> resources such as:<br />
<br />
<br />
<br />
Apps like “Advanced REST Client” and “Postman” from <str<strong>on</strong>g>the</str<strong>on</strong>g> Google Chrome web store<br />
“REST Easy” and “RESTClient” plug-ins for <str<strong>on</strong>g>the</str<strong>on</strong>g> Firefox browser<br />
cURL, Pyth<strong>on</strong>, and o<str<strong>on</strong>g>the</str<strong>on</strong>g>r scripting/programming languages that provide support for dealing with URIs and for<br />
parsing JSON payloads.<br />
9 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Architecture<br />
Because <str<strong>on</strong>g>the</str<strong>on</strong>g> RESTful <str<strong>on</strong>g>API</str<strong>on</strong>g> employed by <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> is web-based, access is provided using URIs, which can be typed into a<br />
web browser. The <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> uses a simple folder structure that starts with <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> root at “/redfish/”. In <str<strong>on</strong>g>the</str<strong>on</strong>g> case<br />
<str<strong>on</strong>g>of</str<strong>on</strong>g> a <strong>PowerEdge</strong> server, <str<strong>on</strong>g>the</str<strong>on</strong>g> root is accessed through <str<strong>on</strong>g>the</str<strong>on</strong>g> URI https:///redfish/v1/ - <str<strong>on</strong>g>the</str<strong>on</strong>g> “v1” at <str<strong>on</strong>g>the</str<strong>on</strong>g> end <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
URI denotes <str<strong>on</strong>g>the</str<strong>on</strong>g> versi<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>.<br />
The URI is <str<strong>on</strong>g>the</str<strong>on</strong>g> primary unique identifier <str<strong>on</strong>g>of</str<strong>on</strong>g> resources. <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> URIs c<strong>on</strong>sist <str<strong>on</strong>g>of</str<strong>on</strong>g> three parts as described in RFC3986: Part<br />
<strong>on</strong>e defines <str<strong>on</strong>g>the</str<strong>on</strong>g> scheme and authority <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> URI, part two specifies <str<strong>on</strong>g>the</str<strong>on</strong>g> root service and versi<strong>on</strong> and part three defines<br />
a unique resource identifier.<br />
For example, in <str<strong>on</strong>g>the</str<strong>on</strong>g> following URI: https://mgmt.vendor.com/redfish/v1/Systems/SvrID<br />
<br />
<br />
<br />
https://mgmr.vendor.com is <str<strong>on</strong>g>the</str<strong>on</strong>g> scheme and authority<br />
/redfish/v1 is <str<strong>on</strong>g>the</str<strong>on</strong>g> root and versi<strong>on</strong><br />
/Systems/SvrID is <str<strong>on</strong>g>the</str<strong>on</strong>g> resource identifier<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> tree structure<br />
From <str<strong>on</strong>g>the</str<strong>on</strong>g> top-level root, <str<strong>on</strong>g>the</str<strong>on</strong>g> RESTful interface branches out to cover a number <str<strong>on</strong>g>of</str<strong>on</strong>g> “Collecti<strong>on</strong>s” which each in turn<br />
include multiple sub-items, creating a tree-like structure. The administrator can drill down through this structure to<br />
find informati<strong>on</strong> and settings <str<strong>on</strong>g>of</str<strong>on</strong>g> interest.<br />
Figure 2<br />
- <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> Tree Structure<br />
10 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
For example, accessing <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> structure for <str<strong>on</strong>g>the</str<strong>on</strong>g> PERC RAID c<strong>on</strong>troller <strong>on</strong> a <strong>PowerEdge</strong> R630 server would be<br />
navigated by using <str<strong>on</strong>g>the</str<strong>on</strong>g> following path:<br />
https:///redfish/v1/Systems/System.Embedded.1/Storage/C<strong>on</strong>trollers/RAID.Integrated.1-1<br />
Or more graphically represented as:<br />
Note that <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> is best navigated starting from <str<strong>on</strong>g>the</str<strong>on</strong>g> root as some porti<strong>on</strong>s <str<strong>on</strong>g>of</str<strong>on</strong>g> an <str<strong>on</strong>g>API</str<strong>on</strong>g> path can vary depending up<strong>on</strong><br />
<str<strong>on</strong>g>the</str<strong>on</strong>g> server hardware c<strong>on</strong>figurati<strong>on</strong>. For example, <str<strong>on</strong>g>the</str<strong>on</strong>g> “RAID.Integrated.1-1” Sub-item in <str<strong>on</strong>g>the</str<strong>on</strong>g> preceding example may be<br />
different when ano<str<strong>on</strong>g>the</str<strong>on</strong>g>r type <str<strong>on</strong>g>of</str<strong>on</strong>g> RAID c<strong>on</strong>troller is installed in <str<strong>on</strong>g>the</str<strong>on</strong>g> managed server.<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Operati<strong>on</strong>s<br />
In <str<strong>on</strong>g>Redfish</str<strong>on</strong>g>, HTTP methods implement <str<strong>on</strong>g>the</str<strong>on</strong>g> operati<strong>on</strong>s <str<strong>on</strong>g>of</str<strong>on</strong>g> a RESTful <str<strong>on</strong>g>API</str<strong>on</strong>g>. This allows <str<strong>on</strong>g>the</str<strong>on</strong>g> user to specify <str<strong>on</strong>g>the</str<strong>on</strong>g> type <str<strong>on</strong>g>of</str<strong>on</strong>g><br />
request being made. It adheres to a standard CRUD (Create, Retrieve, Update, and Delete) format. Depending <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
desired result, a user can issue <str<strong>on</strong>g>the</str<strong>on</strong>g> following types <str<strong>on</strong>g>of</str<strong>on</strong>g> commands:<br />
GET View data<br />
POST Create resources or use acti<strong>on</strong>s<br />
PATCH Change <strong>on</strong>e or more properties <strong>on</strong> a resource<br />
DELETE Remove a resource<br />
Note: In <str<strong>on</strong>g>the</str<strong>on</strong>g> current implementati<strong>on</strong>, HEAD and PUT operati<strong>on</strong>s are not supported for <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> URIs.<br />
Creati<strong>on</strong> and removal <str<strong>on</strong>g>of</str<strong>on</strong>g> data are limited depending <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> management characteristics <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> resource being<br />
targeted. Generally, viewing and changing settings will be more comm<strong>on</strong>.<br />
Au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong><br />
Depending up<strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> sensitivity <str<strong>on</strong>g>of</str<strong>on</strong>g> a given resource, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> clients will be required to au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticate <str<strong>on</strong>g>the</str<strong>on</strong>g>ir access. The<br />
required credentials and supported forms <str<strong>on</strong>g>of</str<strong>on</strong>g> au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong> are determined by <str<strong>on</strong>g>the</str<strong>on</strong>g> platform being managed. In <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
case <str<strong>on</strong>g>of</str<strong>on</strong>g> iDRAC, au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong> is supported using local iDRAC credentials or any <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> o<str<strong>on</strong>g>the</str<strong>on</strong>g>r supported au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong><br />
methods, such as LDAP and Active Directory.<br />
Access to iDRAC data is allowed by au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticated and authorized users <strong>on</strong>ly, except as noted below. Au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong> is<br />
achieved using a subset <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> comm<strong>on</strong> HTTP headers supported by a <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> service – in particular, <str<strong>on</strong>g>the</str<strong>on</strong>g> X-Auth-<br />
Token header. More details <strong>on</strong> au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong> are provided in <str<strong>on</strong>g>the</str<strong>on</strong>g> “Sessi<strong>on</strong> Management” secti<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g><br />
specificati<strong>on</strong>.<br />
Authorizati<strong>on</strong> covers both user privilege and license authorizati<strong>on</strong>. Note that iDRAC <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> support does not require<br />
any special or separate licensing. The following table details <str<strong>on</strong>g>the</str<strong>on</strong>g> au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong> and authorizati<strong>on</strong> required for each<br />
iDRAC <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> acti<strong>on</strong>:<br />
11 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Acti<strong>on</strong>s<br />
Au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong><br />
Required<br />
Authorizati<strong>on</strong><br />
Required<br />
Read operati<strong>on</strong> <strong>on</strong> any instrumentati<strong>on</strong> data Yes Yes<br />
Write operati<strong>on</strong> <strong>on</strong> any instrumentati<strong>on</strong> data Yes Yes<br />
Execute operati<strong>on</strong> <strong>on</strong> any instrumentati<strong>on</strong> data Yes Yes<br />
View Service root No No<br />
View Metadata document No No<br />
View OData Service Document No No<br />
View Message Registry No No<br />
Table 1<br />
– iDRAC <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong> and authorizati<strong>on</strong> requirements<br />
Unlike certain management interfaces that restrict au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong> to a single command, <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Service provides<br />
access to <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> URIs by using two methods:<br />
<br />
<br />
Basic au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong>: In this method, user name and password are provided for each <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> request.<br />
Sessi<strong>on</strong> Based Au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong>: This method is used when issuing multiple <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> operati<strong>on</strong> requests.<br />
o Sessi<strong>on</strong> login is initiated by accessing <str<strong>on</strong>g>the</str<strong>on</strong>g> Create sessi<strong>on</strong> URI. The resp<strong>on</strong>se for this request includes an “X-<br />
Auth-Token” header with a sessi<strong>on</strong> token. Au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong> for subsequent requests is made using this “X-<br />
Auth-Token” header.<br />
o Sessi<strong>on</strong> logout is performed by issuing a DELETE <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> Sessi<strong>on</strong> resource provided by <str<strong>on</strong>g>the</str<strong>on</strong>g> Login operati<strong>on</strong><br />
including <str<strong>on</strong>g>the</str<strong>on</strong>g> X-Auth-Token header.<br />
o Using this approach, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> supports multiple transacti<strong>on</strong>s within a sessi<strong>on</strong> with <str<strong>on</strong>g>the</str<strong>on</strong>g> help <str<strong>on</strong>g>of</str<strong>on</strong>g> X-Authtoken,<br />
sessi<strong>on</strong> token and Locati<strong>on</strong> headers.<br />
Privileges<br />
Privilege model requirements are aligned to <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> specificati<strong>on</strong> and schema. The following table shows <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
relati<strong>on</strong>ship between <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Privileges and native iDRAC Privileges:<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Privileges<br />
Login<br />
C<strong>on</strong>figureManager<br />
C<strong>on</strong>figureUser<br />
C<strong>on</strong>figureManager<br />
C<strong>on</strong>figureComp<strong>on</strong>ents<br />
C<strong>on</strong>figureComp<strong>on</strong>ents<br />
C<strong>on</strong>figureManager<br />
iDRAC Privileges<br />
Login<br />
C<strong>on</strong>fig iDRAC<br />
C<strong>on</strong>fig User<br />
System C<strong>on</strong>trol<br />
Virtual C<strong>on</strong>sole<br />
Virtual Media<br />
Clear Logs<br />
Table 2<br />
– Mapping <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Privileges to iDRAC Privileges<br />
12 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Using <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> <strong>on</strong> <strong>PowerEdge</strong> systems<br />
The following tests were carried out using a <strong>PowerEdge</strong> R730 server loaded with firmware versi<strong>on</strong> 2.30.30.30,<br />
compliant with <str<strong>on</strong>g>the</str<strong>on</strong>g> initial <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> release, specificati<strong>on</strong> versi<strong>on</strong> 1.0.0, published August, 2015. If a <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> compliant<br />
server is not available, a simulated server <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> interface is available at <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>DMTF</str<strong>on</strong>g> website:<br />
http://redfish.dmtf.org/redfish/v1.<br />
Web browser access<br />
Because REST is a web-based <str<strong>on</strong>g>API</str<strong>on</strong>g>, a typical web browser such as Micros<str<strong>on</strong>g>of</str<strong>on</strong>g>t Internet Explorer or Google Chrome can<br />
be used for access. Start <str<strong>on</strong>g>the</str<strong>on</strong>g> web browser and enter <str<strong>on</strong>g>the</str<strong>on</strong>g> iDRAC IP address or hostname followed by /redfish/v1/ and<br />
<str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> root is displayed as shown in <str<strong>on</strong>g>the</str<strong>on</strong>g> following figure:<br />
Figure 3<br />
– Accessing <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> interface using a web browser<br />
Figure 3 illustrates <str<strong>on</strong>g>the</str<strong>on</strong>g> JSON resp<strong>on</strong>se to a GET query. In order to improve readability, it is also possible to install a<br />
JSON parser. The examples in this white paper use JSONView, (link accessible using Google Chrome) available from<br />
<str<strong>on</strong>g>the</str<strong>on</strong>g> Chrome Web Store. O<str<strong>on</strong>g>the</str<strong>on</strong>g>r JSON parsers are available for specific browsers and needs.<br />
13 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
When <str<strong>on</strong>g>the</str<strong>on</strong>g> JSON parser is installed, an easier-to-read view <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> JSON resp<strong>on</strong>se from <str<strong>on</strong>g>the</str<strong>on</strong>g> iDRAC can be presented:<br />
Figure 4<br />
– Viewing <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> with a JSON parser<br />
Each <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> “@odata.id” tags can be explored individually to allow a user to drill down deeper into <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> tree, but<br />
fur<str<strong>on</strong>g>the</str<strong>on</strong>g>r access will prompt for au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong>.<br />
For example, Figure 5 shows how to access <str<strong>on</strong>g>the</str<strong>on</strong>g> Chassis collecti<strong>on</strong>. When <str<strong>on</strong>g>the</str<strong>on</strong>g> /redfish/v1/Chassis/System.Embedded.1<br />
URI is accessed, a pop-up box appears prompting for <str<strong>on</strong>g>the</str<strong>on</strong>g> entry <str<strong>on</strong>g>of</str<strong>on</strong>g> an iDRAC user name and password. After <str<strong>on</strong>g>the</str<strong>on</strong>g>se<br />
credentials are validated, more system details and additi<strong>on</strong>al @odata.id tags are presented:<br />
Figure 5<br />
– iDRAC <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticated server details access<br />
14 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Accessing <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> by using <str<strong>on</strong>g>the</str<strong>on</strong>g> cURL applicati<strong>on</strong><br />
Interacting with <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> using scripting tools can be extremely powerful. The following examples use a <strong>Dell</strong> Latitude<br />
E7440 running Ubuntu to access <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> from <str<strong>on</strong>g>the</str<strong>on</strong>g> command line using <str<strong>on</strong>g>the</str<strong>on</strong>g> cURL applicati<strong>on</strong>.<br />
cURL is a powerful open source command line tool for interacting with various web-based services. It supports both<br />
HTTP and HTTPS in additi<strong>on</strong> to o<str<strong>on</strong>g>the</str<strong>on</strong>g>r protocols. In <str<strong>on</strong>g>the</str<strong>on</strong>g> case <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g>, cURL can be used to test <str<strong>on</strong>g>the</str<strong>on</strong>g> availability and<br />
functi<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> REST interface.<br />
Supplying cURL with <str<strong>on</strong>g>the</str<strong>on</strong>g> iDRAC IP address and <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> root will access <str<strong>on</strong>g>the</str<strong>on</strong>g> service root. If <str<strong>on</strong>g>the</str<strong>on</strong>g> server has a selfsigned<br />
certificate, as in this case, <str<strong>on</strong>g>the</str<strong>on</strong>g> certificate check can be skipped using <str<strong>on</strong>g>the</str<strong>on</strong>g> cURL opti<strong>on</strong> “-k”.<br />
Command:<br />
curl "https:///redfish/v1/" -k<br />
Resp<strong>on</strong>se:<br />
{"@odata.c<strong>on</strong>text":"/redfish/v1/$metadata#ServiceRoot","@odata.id":"/redfish/v1","@odata.type":"#ServiceRoot.1.0.0.Se<br />
rviceRoot","AccountService":{"@odata.id":"/redfish/v1/Managers/iDRAC.Embedded.1/AccountService"},"Chassis":{"@od<br />
ata.id":"/redfish/v1/Chassis"},"Descripti<strong>on</strong>":"Root<br />
Service","EventService":{"@odata.id":"/redfish/v1/EventService"},"Id":"RootService","Js<strong>on</strong>Schemas":{"@odata.id":"/redfish<br />
/v1/JSONSchemas"},"Links":{"Sessi<strong>on</strong>s":{"@odata.id":"/redfish/v1/Sessi<strong>on</strong>s"}},"Managers":{"@odata.id":"/redfish/v1/Manag<br />
ers"},"Name":"Root<br />
Service","<str<strong>on</strong>g>Redfish</str<strong>on</strong>g>Versi<strong>on</strong>":"1.0.0","Registries":{"@odata.id":"/redfish/v1/Registries/Messages/En"},"Sessi<strong>on</strong>Service":{"@oda<br />
ta.id":"/redfish/v1/Sessi<strong>on</strong>Service"},"Systems":{"@odata.id":"/redfish/v1/Systems"},"Tasks":{"@odata.id":"/redfish/v1/TaskS<br />
ervice"}}<br />
For cleaner output formatting, <str<strong>on</strong>g>the</str<strong>on</strong>g> JSON output can be passed to Pyth<strong>on</strong> and <str<strong>on</strong>g>the</str<strong>on</strong>g> module js<strong>on</strong>.tool (output limited for<br />
brevity):<br />
Command:<br />
curl "https:///redfish/v1/" -k | pyth<strong>on</strong> -m js<strong>on</strong>.tool<br />
Resp<strong>on</strong>se:<br />
{<br />
"@odata.c<strong>on</strong>text": "/redfish/v1/$metadata#ServiceRoot",<br />
"@odata.id": "/redfish/v1",<br />
"@odata.type": "#ServiceRoot.1.0.0.ServiceRoot",<br />
"AccountService": {<br />
"@odata.id": "/redfish/v1/Managers/iDRAC.Embedded.1/AccountService"<br />
},<br />
"Chassis": {<br />
"@odata.id": "/redfish/v1/Chassis" …<br />
15 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Using cURL with au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong><br />
As discussed above, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> supports Basic and Sessi<strong>on</strong> based au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong>. Here are <str<strong>on</strong>g>the</str<strong>on</strong>g> cURL commands used for<br />
au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong> operati<strong>on</strong>s:<br />
Basic Au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong>: Drilling down fur<str<strong>on</strong>g>the</str<strong>on</strong>g>r into <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> will require au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong>. This can be d<strong>on</strong>e using<br />
“-u username:password” <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> cURL command line:<br />
curl "https:///redfish/v1/Chassis" -k -u root:calvin<br />
This au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticates <str<strong>on</strong>g>the</str<strong>on</strong>g> single operati<strong>on</strong> using <str<strong>on</strong>g>the</str<strong>on</strong>g> provided credentials.<br />
Sessi<strong>on</strong> Based Au<str<strong>on</strong>g>the</str<strong>on</strong>g>nticati<strong>on</strong>: This requires a two stage process, creating a sessi<strong>on</strong> called Login and deleting sessi<strong>on</strong><br />
called Logout. For login, run <str<strong>on</strong>g>the</str<strong>on</strong>g> following command in verbose mode by appending opti<strong>on</strong> –v; this will output <str<strong>on</strong>g>the</str<strong>on</strong>g> X-<br />
Auth-Token value for use in <str<strong>on</strong>g>the</str<strong>on</strong>g> subsequent commands:<br />
curl -k -X POST -d '{"UserName":"root","Password":"calvin"}' https:///redfish/v1/Sessi<strong>on</strong>s -v<br />
Once logged in, subsequent commands can be sent using X-Auth-Token as shown below:<br />
curl -k https:///redfish/v1/Chassis -v --header "X-Auth-Token: "<br />
curl -k https:///redfish/v1/Systems -v --header "X-Auth-Token: "<br />
After executing <str<strong>on</strong>g>the</str<strong>on</strong>g> desired commands, <str<strong>on</strong>g>the</str<strong>on</strong>g> sessi<strong>on</strong> can be terminated using Logout:<br />
curl -k -X DELETE https:///redfish/v1/Sessi<strong>on</strong>s/6 -v --header "X-Auth-Token: "<br />
Accessing <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> by using Pyth<strong>on</strong> scripting<br />
One <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> goals <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> is to enable easy access from comm<strong>on</strong> scripting languages such as Pyth<strong>on</strong>. The<br />
following Pyth<strong>on</strong> script examples implement key <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> use cases. In <str<strong>on</strong>g>the</str<strong>on</strong>g>se examples, it is assumed that <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
Pyth<strong>on</strong> HTTP “requests” library (found here: http://docs.pyth<strong>on</strong>-requests.org/en/master/ ) has been downloaded. Also,<br />
note that <str<strong>on</strong>g>the</str<strong>on</strong>g> examples assume <str<strong>on</strong>g>the</str<strong>on</strong>g> factory default credentials <str<strong>on</strong>g>of</str<strong>on</strong>g> “root”/“calvin” for access to <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> – <str<strong>on</strong>g>the</str<strong>on</strong>g>se<br />
should be changed to <str<strong>on</strong>g>the</str<strong>on</strong>g> appropriate credentials for a specific iDRAC target.<br />
View general system informati<strong>on</strong> and status<br />
In this use case, <str<strong>on</strong>g>the</str<strong>on</strong>g> SSL/TLS certificate check is skipped by setting “verify=False”. Note that <str<strong>on</strong>g>the</str<strong>on</strong>g> “RAID.Integrated.1-1”<br />
path may differ between systems depending <strong>on</strong> <str<strong>on</strong>g>the</str<strong>on</strong>g> type <str<strong>on</strong>g>of</str<strong>on</strong>g> RAID c<strong>on</strong>troller installed. Therefore, it is recommended to<br />
navigate <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g> path starting from <str<strong>on</strong>g>the</str<strong>on</strong>g> root.<br />
import requests<br />
import js<strong>on</strong><br />
system = requests.get('https:///redfish/v1/Systems/System.Embedded.1',verify=False,auth=('root','calvin'))<br />
16 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
storage = requests.get('https:///redfish/v1/Systems/System.Embedded.1/Storage/C<strong>on</strong>trollers/RAID.Integrated.1-<br />
1',verify=False,auth=('root','calvin'))<br />
systemData = system.js<strong>on</strong>()<br />
storageData = storage.js<strong>on</strong>()<br />
print "Model:<br />
{}".format(systemData[u'Model'])<br />
print "Manufacturer: {}".format(systemData[u'Manufacturer'])<br />
print "Service tag {}".format(systemData[u'SKU'])<br />
print "Serial number: {}".format(systemData[u'SerialNumber'])<br />
print "Hostname: {}".format(systemData[u'HostName'])<br />
print "Power state: {}".format(systemData[u'PowerState'])<br />
print "Asset tag: {}".format(systemData[u'AssetTag'])<br />
print "Memory size: {}".format(systemData[u'MemorySummary'][u'TotalSystemMemoryGiB'])<br />
print "CPU type: {}".format(systemData[u'ProcessorSummary'][u'Model'])<br />
print "Number <str<strong>on</strong>g>of</str<strong>on</strong>g> CPUs: {}".format(systemData[u'ProcessorSummary'][u'Count'])<br />
print "System status: {}".format(systemData[u'Status'][u'Health'])<br />
print "RAID health: {}".format(storageData[u'Status'][u'Health'])<br />
Output:<br />
Model:<br />
<strong>PowerEdge</strong> R730<br />
Manufacturer: <strong>Dell</strong> Inc.<br />
Service tag BN7----<br />
Serial number: CN7-----------<br />
Hostname: XenServer<br />
Power state: On<br />
Asset tag:<br />
Memory size: 64.0<br />
CPU type: Intel(R) Xe<strong>on</strong>(R) CPU E5-2640 v3 @ 2.60GHz<br />
Number <str<strong>on</strong>g>of</str<strong>on</strong>g> CPUs: 2<br />
System status: OK<br />
RAID health: OK<br />
17 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
View system health across multiple servers<br />
This example displays <str<strong>on</strong>g>the</str<strong>on</strong>g> service tag and overall system status for multiple systems; <str<strong>on</strong>g>the</str<strong>on</strong>g> source servers are identified<br />
by a file c<strong>on</strong>sisting <str<strong>on</strong>g>of</str<strong>on</strong>g> iDRAC IP addresses and FQDNs as input.<br />
import requests<br />
import js<strong>on</strong><br />
with open("serverList.txt", "r") as serverList:<br />
for server in serverList.readlines():<br />
req = requests.get("https://" + server.rstrip() +<br />
"/redfish/v1/Systems/System.Embedded.1",verify=False,auth=('root','calvin'))<br />
reqJs<strong>on</strong> = req.js<strong>on</strong>()<br />
print "System {}: Health status:<br />
{}".format(reqJs<strong>on</strong>[u'SKU'],reqJs<strong>on</strong>[u'Status'][u'Health'])<br />
View system event log<br />
import requests<br />
import js<strong>on</strong><br />
system = requests.get('https:///redfish/v1/Managers/iDRAC.Embedded.1/Logs/Sel',verify=False,auth=('root','calvin'))<br />
systemData = system.js<strong>on</strong>()<br />
for logEntry in systemData[u'Members']:<br />
print "{}: {}".format(logEntry[u'Name'],logEntry[u'Created'])<br />
print " {}\n".format(logEntry[u'Message'])<br />
Output (shortened for brevity):<br />
Log Entry 93: 2016-02-26T09:35:55+09:00<br />
The chassis is closed while <str<strong>on</strong>g>the</str<strong>on</strong>g> power is <str<strong>on</strong>g>of</str<strong>on</strong>g>f.<br />
Log Entry 92: 2016-02-26T09:35:50+09:00<br />
The chassis is open while <str<strong>on</strong>g>the</str<strong>on</strong>g> power is <str<strong>on</strong>g>of</str<strong>on</strong>g>f.<br />
Log Entry 91: 2015-09-24T14:04:59+09:00<br />
OEM s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware event.<br />
Log Entry 90: 2015-09-24T14:04:59+09:00<br />
C: boot completed.<br />
18 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Check system power state<br />
This script displays <str<strong>on</strong>g>the</str<strong>on</strong>g> current server power state - <strong>on</strong> or <str<strong>on</strong>g>of</str<strong>on</strong>g>f.<br />
import requests<br />
import js<strong>on</strong><br />
resp<strong>on</strong>se = requests.get('https:///redfish/v1/Systems/System.Embedded.1',verify=False,auth=('root','calvin'))<br />
data = resp<strong>on</strong>se.js<strong>on</strong>()<br />
print data[u'PowerState']<br />
Power <strong>on</strong> a system<br />
Server power is c<strong>on</strong>trolled by using a POST operati<strong>on</strong> to <str<strong>on</strong>g>the</str<strong>on</strong>g> ComputerSystem.Reset URI to request <str<strong>on</strong>g>the</str<strong>on</strong>g> desired acti<strong>on</strong>.<br />
import requests<br />
import js<strong>on</strong><br />
url = 'https:///redfish/v1/Systems/System.Embedded.1/Acti<strong>on</strong>s/ComputerSystem.Reset'<br />
payload = {'ResetType': 'On'}<br />
headers = {'c<strong>on</strong>tent-type': 'applicati<strong>on</strong>/js<strong>on</strong>'}<br />
resp<strong>on</strong>se = requests.post(url, data=js<strong>on</strong>.dumps(payload), headers=headers, verify=False,<br />
auth=('root','calvin'))<br />
Power <str<strong>on</strong>g>of</str<strong>on</strong>g>f a system<br />
import requests<br />
import js<strong>on</strong><br />
url = 'https:///redfish/v1/Systems/System.Embedded.1/Acti<strong>on</strong>s/ComputerSystem.Reset'<br />
payload = {'ResetType': 'ForceOff'}<br />
headers = {'c<strong>on</strong>tent-type': 'applicati<strong>on</strong>/js<strong>on</strong>'}<br />
resp<strong>on</strong>se = requests.post(url, data=js<strong>on</strong>.dumps(payload), headers=headers, verify=False,<br />
auth=('root','calvin'))<br />
19 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
View system power usage<br />
Use this script to view current, average, minimum, and maximum system power c<strong>on</strong>sumpti<strong>on</strong>.<br />
import requests<br />
import js<strong>on</strong><br />
system = requests.get('https:///redfish/v1/Chassis/System.Embedded.1/Power/PowerC<strong>on</strong>trol',verify=False,auth=('root','c<br />
alvin'))<br />
systemData = system.js<strong>on</strong>()<br />
print "C<strong>on</strong>sumed power: {}".format(systemData[u'PowerC<strong>on</strong>sumedWatts'])<br />
print "Average reading:<br />
{}".format(systemData[u'PowerMetrics'][u'AverageC<strong>on</strong>sumedWatts'])<br />
print "Max reading:<br />
{}".format(systemData[u'PowerMetrics'][u'MaxC<strong>on</strong>sumedWatts'])<br />
print "Min reading:<br />
{}".format(systemData[u'PowerMetrics'][u'MinC<strong>on</strong>sumedWatts'])<br />
Output:<br />
C<strong>on</strong>sumed power: 149<br />
Average reading: 155<br />
Max reading: 169<br />
Min reading: 144<br />
Update general System Informati<strong>on</strong> with PATCH operati<strong>on</strong><br />
This example dem<strong>on</strong>strates how to update <str<strong>on</strong>g>the</str<strong>on</strong>g> System read/write properties as defined in <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> specificati<strong>on</strong>.<br />
Users can provide informati<strong>on</strong> about <str<strong>on</strong>g>the</str<strong>on</strong>g> properties in <str<strong>on</strong>g>the</str<strong>on</strong>g> System and can update single or multiple properties. If <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
user provides invalid informati<strong>on</strong> for updating a property due to an invalid data type or unacceptable data, <str<strong>on</strong>g>the</str<strong>on</strong>g> iDRAC<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> service provides extended informati<strong>on</strong> al<strong>on</strong>g with an error indicati<strong>on</strong>.<br />
import requests<br />
import js<strong>on</strong><br />
url = 'https:///redfish/v1/Systems/System.Embedded.1'<br />
payload = {' Hostname ': ' Ubuntu ' }<br />
headers = {'c<strong>on</strong>tent-type': 'applicati<strong>on</strong>/js<strong>on</strong>'}<br />
resp<strong>on</strong>se = requests.patch(url, data=js<strong>on</strong>.dumps(payload), headers=headers, verify=False,<br />
auth=('root','calvin'))<br />
print "Status Code: {}".format(resp<strong>on</strong>se.status_code)<br />
print "Extended Info Message: {}".format(resp<strong>on</strong>se.js<strong>on</strong>())<br />
20 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Output:<br />
Status Code: 200<br />
Extended Info Message: {u'Success': {u'Message': u'Successfully Completed Request',<br />
u'Resoluti<strong>on</strong>': u'N<strong>on</strong>e', u'Severity': u'Ok', u'MessageId': u'Base.1.0.Success'}}<br />
Using <str<strong>on</strong>g>the</str<strong>on</strong>g> above script, if <str<strong>on</strong>g>the</str<strong>on</strong>g> user provides an incorrect type for <str<strong>on</strong>g>the</str<strong>on</strong>g> input data as shown below, <str<strong>on</strong>g>the</str<strong>on</strong>g>y will receive<br />
extended informati<strong>on</strong> specifying <str<strong>on</strong>g>the</str<strong>on</strong>g> error. For example, if <str<strong>on</strong>g>the</str<strong>on</strong>g> payload was improperly input as:<br />
payload = {' Hostname ': 1234 } this would result in <str<strong>on</strong>g>the</str<strong>on</strong>g> following output:<br />
Output:<br />
Status Code: 400<br />
Extended Info Message: {u'error': {u'code': u'Base.1.0.GeneralError', u'message':<br />
u'A general error has occurred. See ExtendedInfo for more informati<strong>on</strong>',<br />
u'@Message.ExtendedInfo': [{u'Severity': u'Warning', u'MessageId':<br />
u'Base.1.0.PropertyValueTypeError', u'RelatedProperties': [u'HostName'], u'Message':<br />
u'The value integer or boolean for <str<strong>on</strong>g>the</str<strong>on</strong>g> property HostName is <str<strong>on</strong>g>of</str<strong>on</strong>g> a different type than <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
property can accept.', u'Resoluti<strong>on</strong>': u'Correct <str<strong>on</strong>g>the</str<strong>on</strong>g> value for <str<strong>on</strong>g>the</str<strong>on</strong>g> property in <str<strong>on</strong>g>the</str<strong>on</strong>g> request<br />
body and resubmit <str<strong>on</strong>g>the</str<strong>on</strong>g> request if <str<strong>on</strong>g>the</str<strong>on</strong>g> operati<strong>on</strong> failed.', u'MessageArgs': [u'integer or<br />
boolean', u'HostName']}]}}<br />
If <str<strong>on</strong>g>the</str<strong>on</strong>g>re are internal processing errors for a request, a 500 status code will be returned with an internal error message:<br />
Output:<br />
Status Code: 500<br />
Extended Info Message: {u'error': {u'code': u'Base.1.0.GeneralError', u'message':<br />
u'A general error has occurred. See ExtendedInfo for more informati<strong>on</strong>',<br />
u'@Message.ExtendedInfo': [{u'Severity': u'Critical', u'MessageId':<br />
u'Base.1.0.InternalError', u'RelatedProperties': [u'HostName'], u'Message': u'The request<br />
failed due to an internal service error. The service is still operati<strong>on</strong>al.',<br />
u'Resoluti<strong>on</strong>': u'Resubmit <str<strong>on</strong>g>the</str<strong>on</strong>g> request. If <str<strong>on</strong>g>the</str<strong>on</strong>g> problem persists, c<strong>on</strong>sider resetting <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
service.'}]}}<br />
The same approach is implemented for POST and DELETE operati<strong>on</strong>s.<br />
Change boot device temporarily<br />
Instructing a server to boot <strong>on</strong>ce into BIOS or to boot from an alternate source, such as PXE can be d<strong>on</strong>e by<br />
modifying <str<strong>on</strong>g>the</str<strong>on</strong>g> BootSourceOverrideTarget value. Note that a PATCH acti<strong>on</strong> is required because <str<strong>on</strong>g>the</str<strong>on</strong>g> script updates <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
existing boot target value.<br />
import requests<br />
import js<strong>on</strong><br />
url = 'https:///redfish/v1/Systems/System.Embedded.1'<br />
payload = {'Boot': {'BootSourceOverrideTarget': 'BiosSetup'} }<br />
21 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
headers = {'c<strong>on</strong>tent-type': 'applicati<strong>on</strong>/js<strong>on</strong>'}<br />
resp<strong>on</strong>se = requests.patch(url, data=js<strong>on</strong>.dumps(payload), headers=headers, verify=False,<br />
auth=('root','calvin'))<br />
Update / modify iDRAC user account<br />
The iDRAC has pre-defined slots for internal user accounts. To modify an account, a PATCH acti<strong>on</strong> is used ra<str<strong>on</strong>g>the</str<strong>on</strong>g>r than<br />
a POST. “RoleId” is used to specify <str<strong>on</strong>g>the</str<strong>on</strong>g> type <str<strong>on</strong>g>of</str<strong>on</strong>g> access permissi<strong>on</strong>s to be granted to <str<strong>on</strong>g>the</str<strong>on</strong>g> user; in this case, <str<strong>on</strong>g>the</str<strong>on</strong>g> Operator<br />
role is used.<br />
import requests<br />
import js<strong>on</strong><br />
url = 'https:///redfish/v1/Managers/iDRAC.Embedded.1/Accounts/'<br />
plUserName = {'UserName': 'user03'}<br />
plPass = {'Password': 'calvin'}<br />
plRoleId = {'RoleId': 'Operator'}<br />
headers = {'c<strong>on</strong>tent-type': 'applicati<strong>on</strong>/js<strong>on</strong>'}<br />
for payload in plUserName,plPass,plRoleId:<br />
resp<strong>on</strong>se = requests.patch(url, data=js<strong>on</strong>.dumps(payload), headers=headers,<br />
verify=False, auth=('root','calvin'))<br />
Extended Informati<strong>on</strong><br />
When errors occur during operati<strong>on</strong>s, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> provides Extended Informati<strong>on</strong> detailing <str<strong>on</strong>g>the</str<strong>on</strong>g> error. iDRAC includes a<br />
<strong>Dell</strong>-provided Message Registry, accessible by <str<strong>on</strong>g>the</str<strong>on</strong>g> MessageId returned as part <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> Extended Informati<strong>on</strong>, that gives<br />
directi<strong>on</strong> for resoluti<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> error.<br />
The following is a Pyth<strong>on</strong> scripting example illustrating Extended Informati<strong>on</strong>:<br />
import requests<br />
import js<strong>on</strong><br />
url = 'https:///redfish/v1/Managers/iDRAC.Embedded.1/SerialInterfaces/iDRAC.Embedded.1%23Serial.1'<br />
payload = {'BitRate':19200}<br />
headers = {'c<strong>on</strong>tent-type':'applicati<strong>on</strong>/js<strong>on</strong>'}<br />
resp<strong>on</strong>se =<br />
requests.patch(url,data=js<strong>on</strong>.dumps(payload),headers=headers,verify=False,auth=('root','ca<br />
lvin'))<br />
print "Status Code:{}".format(resp<strong>on</strong>se.status_code)<br />
22 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
print "Extended Error Message:{}".format(resp<strong>on</strong>se.js<strong>on</strong>())<br />
The above script updates <str<strong>on</strong>g>the</str<strong>on</strong>g> property 'BitRate' to <str<strong>on</strong>g>the</str<strong>on</strong>g> value 19200, a valid setting.<br />
Output:<br />
Status Code: 200<br />
Extended Error Message:{u'Success': {u'Message': u'Successfully Completed Request',<br />
u'Resoluti<strong>on</strong>': u'N<strong>on</strong>e', u'Severity': u'Ok', u'MessageId': u'Base.1.0.Success'}}<br />
If <str<strong>on</strong>g>the</str<strong>on</strong>g> script is modified to attempt an update with an unsupported value, an error will occur and Extended Informati<strong>on</strong><br />
will be returned:<br />
payload = {'BitRate':1900}<br />
Output:<br />
Status Code: 400<br />
Extended Error Message: {u'error': {u'code': u'Base.1.0.GeneralError', u'message':<br />
u'A general error has occurred. See ExtendedInfo for more informati<strong>on</strong>',<br />
u'@Message.ExtendedInfo': [{u'Severity': u'Warning', u'MessageId':<br />
u'Base.1.0.PropertyValueNotInList', u'RelatedProperties': [u'BitRate'], u'Message': u'The<br />
value 1900 for <str<strong>on</strong>g>the</str<strong>on</strong>g> property BitRate is not in <str<strong>on</strong>g>the</str<strong>on</strong>g> list <str<strong>on</strong>g>of</str<strong>on</strong>g> acceptable values.',<br />
u'Resoluti<strong>on</strong>': u'Choose a value from <str<strong>on</strong>g>the</str<strong>on</strong>g> enumerati<strong>on</strong> list that <str<strong>on</strong>g>the</str<strong>on</strong>g> implementati<strong>on</strong> can<br />
support and resubmit <str<strong>on</strong>g>the</str<strong>on</strong>g> request if <str<strong>on</strong>g>the</str<strong>on</strong>g> operati<strong>on</strong> failed.', u'MessageArgs': [u'1900',<br />
u'BitRate']}]}}<br />
The following example uses an incorrect data type – a text string ra<str<strong>on</strong>g>the</str<strong>on</strong>g>r than a numeric value. This illustrates <str<strong>on</strong>g>the</str<strong>on</strong>g><br />
distinctive error informati<strong>on</strong> and resoluti<strong>on</strong>s provided by Extended Informati<strong>on</strong> and <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> Message Registry.<br />
payload = {'BitRate':'19200'}<br />
Output:<br />
Status Code:400<br />
Extended Error Message: {u'error': {u'code': u'Base.1.0.GeneralError', u'message':<br />
u'A general error has occurred. See ExtendedInfo for more informati<strong>on</strong>',<br />
u'@Message.ExtendedInfo': [{u'Severity': u'Warning', u'MessageId':<br />
u'Base.1.0.PropertyValueTypeError', u'RelatedProperties': [u'BitRate'], u'Message': u'The<br />
value string or boolean for <str<strong>on</strong>g>the</str<strong>on</strong>g> property BitRate is <str<strong>on</strong>g>of</str<strong>on</strong>g> a different type than <str<strong>on</strong>g>the</str<strong>on</strong>g> property<br />
can accept.', u'Resoluti<strong>on</strong>': u'Correct <str<strong>on</strong>g>the</str<strong>on</strong>g> value for <str<strong>on</strong>g>the</str<strong>on</strong>g> property in <str<strong>on</strong>g>the</str<strong>on</strong>g> request body and<br />
resubmit <str<strong>on</strong>g>the</str<strong>on</strong>g> request if <str<strong>on</strong>g>the</str<strong>on</strong>g> operati<strong>on</strong> failed.', u'MessageArgs': [u'string or boolean',<br />
u'BitRate']}]}}<br />
23 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Summary<br />
The <str<strong>on</strong>g>DMTF</str<strong>on</strong>g> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> standard is emerging as a key new tool for efficient, scalable, and secure server management.<br />
Utilizing an industry-standard interface and data format, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> supports rapid development <str<strong>on</strong>g>of</str<strong>on</strong>g> automati<strong>on</strong> for <strong>on</strong>eto-many<br />
server management. System administrators and IT developers will appreciate <str<strong>on</strong>g>Redfish</str<strong>on</strong>g>’s features that can<br />
increase efficiency, lower costs and boost productivity across <str<strong>on</strong>g>the</str<strong>on</strong>g>ir organizati<strong>on</strong>s.<br />
<strong>Dell</strong> is a committed leader in <str<strong>on</strong>g>the</str<strong>on</strong>g> development and implementati<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> open, industry standards. Supporting <str<strong>on</strong>g>Redfish</str<strong>on</strong>g><br />
within <str<strong>on</strong>g>the</str<strong>on</strong>g> iDRAC with Lifecycle C<strong>on</strong>troller fur<str<strong>on</strong>g>the</str<strong>on</strong>g>r enhances <str<strong>on</strong>g>the</str<strong>on</strong>g> manageability <str<strong>on</strong>g>of</str<strong>on</strong>g> <strong>PowerEdge</strong> servers, providing<br />
ano<str<strong>on</strong>g>the</str<strong>on</strong>g>r powerful tool to help IT administrators reduce complexity and help save time and m<strong>on</strong>ey.<br />
24 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
<strong>Dell</strong> Customer Soluti<strong>on</strong> Centers<br />
This white paper was produced with <str<strong>on</strong>g>the</str<strong>on</strong>g> assistance <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> Customer Soluti<strong>on</strong> Center, Tokyo. <strong>Dell</strong> Customer<br />
Soluti<strong>on</strong> Centers are a global network <str<strong>on</strong>g>of</str<strong>on</strong>g> c<strong>on</strong>nected labs that enable <strong>Dell</strong> customers to strategize, architect, validate<br />
and build soluti<strong>on</strong>s, from <str<strong>on</strong>g>the</str<strong>on</strong>g> data center to <str<strong>on</strong>g>the</str<strong>on</strong>g> edge <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> network. With centers located around <str<strong>on</strong>g>the</str<strong>on</strong>g> globe, <str<strong>on</strong>g>the</str<strong>on</strong>g>y can<br />
help customers whe<str<strong>on</strong>g>the</str<strong>on</strong>g>r through an informal 30-60 minute briefing, a half-day workshop, or a pro<str<strong>on</strong>g>of</str<strong>on</strong>g>-<str<strong>on</strong>g>of</str<strong>on</strong>g>-c<strong>on</strong>cept that<br />
enables “kicking <str<strong>on</strong>g>the</str<strong>on</strong>g> tires” <str<strong>on</strong>g>of</str<strong>on</strong>g> a soluti<strong>on</strong> prior to a purchase decisi<strong>on</strong>. Customers can c<strong>on</strong>tact <str<strong>on</strong>g>the</str<strong>on</strong>g>ir <strong>Dell</strong> account team to<br />
initiate an engagement with a Soluti<strong>on</strong> Center. To learn more visit www.dell.com/soluti<strong>on</strong>centers.<br />
●Bangalore<br />
Figure 6<br />
– <strong>Dell</strong> Customer Soluti<strong>on</strong> Center locati<strong>on</strong>s<br />
25 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Additi<strong>on</strong>al Informati<strong>on</strong><br />
<str<strong>on</strong>g>DMTF</str<strong>on</strong>g> white papers, <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Schemas, specificati<strong>on</strong>s, webinars and work-in-progress documents<br />
https://www.dmtf.org/standards/redfish<br />
The <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> standard specificati<strong>on</strong> is available from <str<strong>on</strong>g>the</str<strong>on</strong>g> <str<strong>on</strong>g>DMTF</str<strong>on</strong>g> website<br />
http://www.dmtf.org/sites/default/files/standards/documents/DSP0266_1.0.1.pdf<br />
The iDRAC with Lifecycle C<strong>on</strong>troller home page <strong>on</strong> <strong>Dell</strong> TechCenter provides access to product documents, technical<br />
white papers, how-to videos and more<br />
http://en.community.dell.com/techcenter/systems-management/w/wiki/3204<br />
JSON lightweight data interchange format<br />
http://www.js<strong>on</strong>.org/<br />
OData4 open protocol standard for <str<strong>on</strong>g>the</str<strong>on</strong>g> definiti<strong>on</strong> and exchange <str<strong>on</strong>g>of</str<strong>on</strong>g> informati<strong>on</strong> using RESTful <str<strong>on</strong>g>API</str<strong>on</strong>g>s<br />
http://www.odata.org/<br />
Acr<strong>on</strong>yms<br />
<str<strong>on</strong>g>API</str<strong>on</strong>g><br />
BMC<br />
<str<strong>on</strong>g>DMTF</str<strong>on</strong>g><br />
DSP<br />
FQDD<br />
HTTP<br />
HTTPS<br />
iDRAC<br />
IPMI<br />
JSON<br />
LC<br />
OData<br />
OOB<br />
REST<br />
SNMP<br />
SPMF<br />
SSL<br />
TLS<br />
URI<br />
Applicati<strong>on</strong> Programming Interface<br />
Baseboard Management C<strong>on</strong>troller<br />
Distributed Management Task Force<br />
<str<strong>on</strong>g>DMTF</str<strong>on</strong>g> Standard Publicati<strong>on</strong>s<br />
Fully Qualified Device Descriptor<br />
Hyper Text Transfer Protocol<br />
HTTP Secure or HTTP over TLS/SSL<br />
Integrated <strong>Dell</strong> Remote Access C<strong>on</strong>troller<br />
Intelligent Platform Management Interface<br />
Java Script Object Notati<strong>on</strong><br />
Lifecycle C<strong>on</strong>troller<br />
Open Data Protocol<br />
Out-<str<strong>on</strong>g>of</str<strong>on</strong>g>-Band<br />
Representati<strong>on</strong>al State Transfer<br />
Simple Network Management Protocol<br />
Scalable Platforms Management Forum<br />
Secure Sockets Layer<br />
Transport Layer Security<br />
Uniform Resource Identifier<br />
26 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>
Definiti<strong>on</strong>s<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
cURL: an open source command line tool and library for transferring data with URL Syntax<br />
<str<strong>on</strong>g>DMTF</str<strong>on</strong>g>: Distributed Management Task Force, defines management standards supported by numerous<br />
hardware, s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware and service vendors.(www.dmtf.org )<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Client: Name for <str<strong>on</strong>g>the</str<strong>on</strong>g> functi<strong>on</strong>ality that communicates with a <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Service and accesses <strong>on</strong>e or<br />
more resources or functi<strong>on</strong>s <str<strong>on</strong>g>of</str<strong>on</strong>g> <str<strong>on</strong>g>the</str<strong>on</strong>g> Service.<br />
Event: A record that corresp<strong>on</strong>ds to an individual alert.<br />
Subscripti<strong>on</strong>: The act <str<strong>on</strong>g>of</str<strong>on</strong>g> registering a destinati<strong>on</strong> for <str<strong>on</strong>g>the</str<strong>on</strong>g> recepti<strong>on</strong> <str<strong>on</strong>g>of</str<strong>on</strong>g> events.<br />
Notificati<strong>on</strong>: One-way message sent to indicate that an event has occurred<br />
<str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Event Listener: The name for <str<strong>on</strong>g>the</str<strong>on</strong>g> functi<strong>on</strong>ality that receives alerts from a <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> Service. This<br />
functi<strong>on</strong>ality is typically s<str<strong>on</strong>g>of</str<strong>on</strong>g>tware running <strong>on</strong> a remote system that is separate from <str<strong>on</strong>g>the</str<strong>on</strong>g> managed system.<br />
27 Introducing <str<strong>on</strong>g>the</str<strong>on</strong>g> <strong>Dell</strong> <strong>PowerEdge</strong> <str<strong>on</strong>g>Redfish</str<strong>on</strong>g> <str<strong>on</strong>g>API</str<strong>on</strong>g>