03.04.2016 Views

Implementation of the DMTF Redfish API on Dell PowerEdge Servers

Dell-PowerEdge-Redfish-API-Overview

Dell-PowerEdge-Redfish-API-Overview

SHOW MORE
SHOW LESS

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>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!