|
Post by francine on May 9, 2018 11:59:01 GMT
I am trying to imagine how to implement oData in a mockup Redfish server : Should I add a kind of "odata-compatible storage" like MongoDB, elasticsearch, third-party nosql (or sql) database or, as status - for instance - are supposed to change a lot, should I write a kind of "in-memory-odata" structure ? Is there any third-party product that could be helpful ? In other word, what is the best way to imagine a final architecture with odata ? I really would appreciate any help, Francine
|
|
slotain
Minnow
It's bigger than a regular hat. It's funny.
Posts: 19
|
Post by slotain on Oct 28, 2021 17:56:02 GMT
How much OData spec is supposed to be in a Redfish service?
From what I gather, using the opinions of some youtuber (here www.youtube.com/watch?v=z06bl_K6Ckc), OData v4 is very expressive and flexible for creating client programs that consume a backend API. OData is supposed to allow you to create a single backend, and any client function that required some SQL-like functionality (joins, projection, filter, sort, paging) would just get it for free. There are a lot of OData backend servers, but I don't like hardly any of them except for JayData jaydata.org/download which is seemingly mothballed. There's loopback implementations that expose OData, but not sure how successful I can be with those. duckduckgo.com/?t=ffab&q=loopback+odata&atb=v202-1&ia=webAgain, talking from my complete inexperience, a Redfish service implementation doesn't necessarily need to implement these SQL-like functions. The Redfish service needs to meet a minimum set of OData standards -- namely, and not exhaustively, the linking mechanisms provided by OData that allow a client to traverse the API. My understanding of the Redfish spec here is sorely lacking, so if anyone can help me understand the question the OP, francine, is asking and how to answer it better I would appreciate it. I have basically the same question. My assumption is that source of the question (how should I create an OData backend) is coming from wondering how much of the OData spec is required to be a good Redfish citizen. And from a search on the internet, there doesn't seem to be any OData that is specifically tailored for Redfish, and any Redfish service backend you write probably won't meet the OData spec 100% without a lot of effort.
|
|
slotain
Minnow
It's bigger than a regular hat. It's funny.
Posts: 19
|
Post by slotain on Oct 28, 2021 21:46:47 GMT
A slightly more educated response to my own question is probably somewhere in this document (this is how much OData spec should be implemented in your Redfish service): www.dmtf.org/sites/default/files/standards/documents/DSP2052_1.0.0.pdfThis explains how much OData is required in Redfish, and I guess the original question being asked above is about how to implement an OData backend. I get the distinct feeling that the developer experience for implementing OData services is much better with .NET than anything I have experience with (Nodejs, C, Python). I wish I knew how to help.
|
|
|
Post by mraineri on Oct 29, 2021 14:37:43 GMT
You are correct in that the Redfish spec really set the bar low in terms of how much OData support is mandatory in the standard. Much of this was driven from the fact that at the time when Redfish was first being standardized, there was a desire to align with OData tooling as well as make the burden low for implementations to support Redfish. Most of the semantics we still use from OData today are mainly the schema language (CSDL) as well as how to present the data model over the interface. If a service properly sets up the /redfish/v1/$metadata and /redfish/v1/odata URIs, a simplistic OData client should be able to build the data model and traverse the service.
From a service perspective, Apache Olingo has been used to present a more fleshed out OData interface on some systems.
|
|
|
Post by mraineri on Oct 29, 2021 14:41:39 GMT
At least in terms of what OData functionality I hear requests for on implementations, generally this is very limited to OData query parameters we've put in the Redfish specification (such as $expand). Beyond this, the only other asks I hear from users has really just boiled down to supporting specific resources and properties to meet their use cases for system management.
|
|
slotain
Minnow
It's bigger than a regular hat. It's funny.
Posts: 19
|
Post by slotain on Oct 29, 2021 14:51:11 GMT
That's right! I keep forgetting about Apache Olingo; mainly abandoned it because nobody else wants to put Java on the BMC (I love Java, Kotlin to be specific, oh well).
|
|