Giter Club home page Giter Club logo

libredfish's Introduction

libRedfish

Copyright 2017-2019 DMTF. All rights reserved.

About

libRedfish is a C client library that allows for Creation of Entities (POST), Read of Entities (GET), Update of Entities (PATCH), Deletion of Entities (DELETE), running Actions (POST), receiving events, and providing some basic query abilities.

Installation

CentOS 7/Redhat Linux 7

  1. Add the EPEL repository # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  2. Install libjansson, libcurl, and libreadline # yum install jansson libcurl readline
  3. Download RPM (example only please download latest RPM) $ wget https://github.com/DMTF/libredfish/releases/download/1.2.0/libredfish-1.2.0-1.el7.x86_64.rpm
  4. Install the RPM (substititue the file name from the lastest RPM) # rpm -ivh libredfish-1.2.0-1.el7.x86_64.rpm

CentOS 6/Redhat Linux 6

  1. Add the EPEL repository # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
  2. Install libjansson, libcurl, and libreadline # yum install jansson libcurl readline
  3. Download RPM (example only please download latest RPM) $ wget https://github.com/DMTF/libredfish/releases/download/1.2.0/libredfish-1.2.0-1.el6.x86_64.rpm
  4. Install the RPM (substititue the file name from the lastest RPM) # rpm -ivh libredfish-1.2.0-1.el6.x86_64.rpm

Ubuntu

  1. Install libjansson, libcurl, and libreadline apt-get install libjansson4 libcurl4 libreadline7
  2. Download Debian Package
  3. Install Debian Package #dpkg -i libredfish-1.2.0-1.x86_64.deb

Other OS/Distro

Compile from source, see below.

Compilation

Pre-requisists

libRedfish is based on C and the compiling system is required to have:

Build

Run cmake.

RedPath

libRedfish uses a query language based on XPath (https://www.w3.org/TR/1999/REC-xpath-19991116/). This library and query language essentially treat the entire Redfish Service like it was a single JSON document. In other words whenever it encounters an @odata.id it will retrieve the new document (if needed).

Expression Description
nodename Selects the JSON entity with the name "nodename"
/ Selects from the root node
[index] Selects the index number JSON entity from an array or object
[last()] Selects the last index number JSON entity from an array or object
[nodename] Selects all the elements from an array or object that contain a property named "nodename"
[name=value] Selects all the elements from an array or object where the property "name" is equal to "value"
[name<value] Selects all the elements from an array or object where the property "name" is less than "value"
[name<=value] Selects all the elements from an array or object where the property "name" is less than or equal to "value"
[name>value] Selects all the elements from an array or object where the property "name" is greater than "value"
[name>=value] Selects all the elements from an array or object where the property "name" is greater than or equal to "value"
[name!=value] Selects all the elements from an array or object where the property "name" does not equal "value"
[*] Selects all the elements from an array or object
[node.child] Selects all the elements from an array or object that contain a property named "node" which contains "child"

Some examples:

  • /Chassis[1] - Will return the first Chassis instance
  • /Chassis[SKU=1234] - Will return all Chassis instances with a SKU field equal to 1234
  • /Systems[Storage] - Will return all the System instances that have Storage field populated
  • /Systems[*] - Will return all the System instances
  • /SessionService/Sessions[last()] - Will return the last Session instance
  • /Chassis[Location.Info] - Will return all the Chassis instances that have a Location field and a Info subfield of Location
  • /Systems[Status.Health=OK] - Will return all System instances that have a Health of OK

C Example

#include <redfish.h>
#include <stdio.h>

int main(int argc, char** argv)
{
    redfishService* service = createRedfishServiceEnumerator(argv[1], NULL, NULL, 0);
    redfishPayload* payload = getPayloadByPath(service, argv[2]);
    char* payloadStr = payloadToString(payload, true);
    printf("Payload Value = %s\n", payloadStr);
    free(payloadStr);
    cleanupPayload(payload);
    cleanupEnumerator(service);
}

Release Process

  1. Update CHANGELOG.md with the list of changes since the last release
  2. Update Version in rpm/libredfish.spec to reflect the new library version
  3. Push changes to Github
  4. Create a new release in Github

libredfish's People

Contributors

pboyd04 avatar mraineri avatar dchanman avatar jautor avatar glimchb avatar jaredterry avatar zephyryin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.