Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Redfish composability provides a data model to describe composable hardware, as well as an interface for clients to manage their composition. Composition Service is the top-level resource for all  composability related resources. Within the Composition Service we can find the inventory of Resource Blocks, Resource Zones and Collection Capabilities. Resource Blocks contains inventory of all components that can be used for composability. Resource Zones are descriptors containing the binding restrictions of the different components. Collection Capabilities are annotations that describe how to form composition requests.

ODIM composition service implements the Redfish composition model. The composition service provides APIs and framework to build the composable infrastructure using ODIM resources. Initially, Composition service offers the features like resource blocks and resource zones. Any supported actions on these resources will be added. Composition service requires  additional API support from other redfish resources to create a composition, update resources, and delete the composition.


Create a Composed Resource: Redfish Composability model has defined Specific Composition, Constrained Composition. ODIM composition service includes all composition models, in phase-by-phase releases.

Update a composed Resource: Composition service enables updating an existing composition like adding a new resource or removing a attached resource etc.

Delete a composed Resource: Composition service retire or decompose an already composed resource.


References: 

Redfish Composition Service Mockup

Redfish Schema Supplement

Redfish v1.12 Specification

The composition service provides infrastructure to compose a logical system called composed node and associate the required hardware resources on demand. The composition service provides RESTful APIs to compose a node based on the requirements provided as a JSON payload. The composition service keeps the inventory of hardware resources available from the ODIM resource aggregator service. The payload includes one or more of hardware requirements like chassis, computer system, processor, memory, ethernet interfaces, local and remote storage. The composition takes place in two steps, allocate and assemble. Allocate action reserves the best suitable hardware resources from the global pool of available hardware resources.  Assemble action links hardware resources as needed, to the computer system associated. After resources get allocated administrator can review and make sure that resources allocated are best suitable before assembling it.

Composition service provides additional features like attach and detach resources at run time. There is an option to delete the composed node when not needed. The node deletion will release the reserved hardware resource to the global resource pool and they will be available for next node composition. composition Service also provides resource specific actions like power reset, Boot source override, etc.

There is an API to initiate the resource inventory from the resource aggregator to update the latest set of available resources.


API

URI

HTTP Methods

Remarks

Composed Node Collection

Composition Service

/redfish/v1/CompositionService

GET


Resource Blocks

/redfish/v1/CompositionService/

Nodes

ResourceBlocks

GET

Composed Node Instance

, POST

POST to add a resource block manually.  Not in Redfish specification.

Resource Zones

/redfish/v1/

Nodes

CompositionService/

{Id}

ResourceZones

GET, POST, PATCH, DELETE

Allocate Action



Dependencies

Composition Service depends on additional APIs to be supported in other ODIM modules. Listed down the APIs required for Computer system Composition. Later this list will be extended for other composable resources.

APIURIHTTP MethodsRemarksJeff H Comments
Computer system Composition/redfish/v1/
Nodes/Actions/ComposedNode.Allocate

POST

Assemble
SystemsPOSTODIM Systems collection need to have this actionPOST is the wrong answer. Ask DMTF to make it possible to insert and delete from the collection
Add resource block/redfish/v1/
Nodes
Systems/{{
Id
id}}/Actions/
ComposedNode
ComputerSystem.
Assemble
AddResourceBlockPOST
Attach Resource
System instance
Remove resource block

/redfish/v1/

Nodes

Systems/{

Id

{id}}/Actions/

ComposedNode

ComputerSystem.

AttachResource

RemoveResourceBlock

POST
Detach Resource
Systems instance
Delete a composed resource/redfish/v1/
Nodes
Systems/{{
Id}/Actions/ComposedNode.DetachResource

POST

Initiate Inventory

id}}DELETEResources will be deleted and available for next composition


ODIM kind of aggregation services includes servers and hardware resources identified using different technologies and operates on a heterogeneous environment. Building the composition resources in a standard way is not sufficient.  We are listing some of the real time use cases below, on the possible options to build the composition resources.

There are different ways we can build the composition resources, in a heterogeneous environment.


Use Case 1: API to add Composition resources.

Redfish has support to add resource blocks. Redfish specification does not support to add a resource block directly. ODIM Composition Service can exposes APIs to add resource blocks. Admin can add a resource block using this API.  

We recommend that this shall be proposed as a feature enhancement to DMTF.

After the discussion in TSC review meeting, it is decided to add a POST action in resource blocks.  Later, this enhancement will be proposed to DMTF  Redfish Composability TF.  


Computer System Resource Block - Sample

POST /redfish/v1/

...

POST

...

OEM Action

...

Power Reset

CompositionService/ResourceBlocks


{
    "Name""ComputerSystemBlock",
    "Description""Computer System Block",
    "ComputerSystems": [
        {
            "@odata.id""/redfish/v1/

...

POST

Systems/System1"
        }
    ],
    "ResourceBlockType""ComputerSystem",
    "ResourceBlockLimits": {
        "MaxComputerSystem"1,
        "MinComputerSystem"1
    },
    "CompositionStatus": {
        "CompositionState""Unused",
        "MaxCompositions"1,
        "NumberOfCompositions"0,
        "Reserved"false,
        "SharingCapable"false,
        "SharingEnabled"false
    }
}


Storage Resource Block  - Sample

POST /redfish/v1/CompositionService/ResourceBlocks

{
    "Name""Drive Block",
    "Description""Drive Block",
    "Drives": [
        {
            "@odata.id""/redfish/v1/Chassis/chassis1/Drives/drive1"
        }
    ],
    "NetworkInterfaces": [],
    "SimpleStorage": [],
    "Storage": [],
    "ResourceBlockType""Storage",
    "ResourceBlockLimits": {
        "MaxStorage"1,
        "MinStorage"1
    },
    "CompositionStatus": {
        "CompositionState""Unused",
        "MaxCompositions"3,
        "NumberOfCompositions"0,
        "Reserved"false,
        "SharingCapable"true,
        "SharingEnabled"true
    }
}


Use Case 2: Build the composition resources automatically.  

Composition service will have a back end service running that triggers the building of composition service resources like resource blocks and resource zones.  For this Composition service need to be notified when there is a new server added to ODIM.    

When a new server is added to ODIM, the composition service gets notified. Then composition service collect the new servers resource information and build the composition resources. There is a limitation here that the composition service does not recognize the underlying connectivity across the disaggregated resources. This could be helpful build the resource blocks and resource zones for the integrated resources like compute, processor, memory etc.


After discussion in TSC proposal review meeting, following suggestions provided. Composition service can build the resource blocks and allow administrators to create the resource zones and add the resource blocks. 


Use Case 3: Utilizes composition resources from underlying services.

When a new server added to the ODIM, ODIM knows the underlying service (like  redfish service) that provides the information. If the underlying service is redfish and exposing the composition  service resources that can be consumed in the ODIM composition service. 

We must check the possibilities of doing this, as composition service may not have visibility to underlying services that provides the resource data.

 

Development Plan

Composition Service will be implemented in python 3.x. It has following components.

  1.  Composition service - A back end service that builds and monitor the composition resources. Running as a service 
  2.  API server  - API server exposes the Composition service APIs. Running as a service
  3. DBA library  - Includes DB abstraction. Will be included in  both applications.
  4.  Utility library - Provides helper functions needed. Included in both applications
  5. Service scripts - To run the applications as a service
  6. Build script - To build the environment and install services 

Initial implementation of ODIM Composition service will have support for resource blocks, resource zones and computer system composition. The initial version shall add support to specific composition.

The constrained composition, and other resource composition will be added later versions.  Also, future versions of composition service adopts new features added by DMTF Redfish Composability task force.


Questions to DMTF

  1. Redfish Composition service schema is not allowing POST action for new resource blocks creation.

Resource block collection schema defines  resource blocks are not insertable.

            "deletable"false,
            "insertable"false,
            "updatable"false,

We should be able to support CRUD operations on the resource blocks.


To TSC:

2. System capabilities are global to the the system collection. ODIM collects resources from many redfish services that has its own capabilities. How to handle this in the multi vendor environment like ODIM.   

...

Boot Source Override

...

/redfish/v1/Nodes/{Id}

...