Skip to content

redfish: Add OEM BMC Pairing schema for IBM#1437

Open
abhilashraju wants to merge 1 commit into
ibm-openbmc:1210from
abhilashraju:adding_bmc_pairing_schema
Open

redfish: Add OEM BMC Pairing schema for IBM#1437
abhilashraju wants to merge 1 commit into
ibm-openbmc:1210from
abhilashraju:adding_bmc_pairing_schema

Conversation

@abhilashraju

Copy link
Copy Markdown
Contributor

Add OemBmcPairing schema to support BMC pairing functionality. This includes:

  • CSDL schema definition (OemBmcPairing_v1.xml)
  • JSON schema files (OemBmcPairing.json and OemBmcPairing.v1_0_0.json)
  • Meson build configuration update

The schema defines:

  • BmcPairing complex type with Paired status and AvailableBmcs list
  • Pair action to establish pairing between BMCs

This enables discovery and pairing of multiple BMCs in the system.

@jeaaustx jeaaustx left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not an expert on schema definitions, but I've noted some things which don't look correct to me.

I also see the Manager schema has a separate "OemActions" and "Oem" defined. Is that where this would be linked?

</edmx:Reference>
<edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Manager_v1.xml">
<edmx:Include Namespace="Manager" />
<edmx:Include Namespace="Manager.v1_0_0" />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1210 is using #Manager.v1_15_0.Manager, should this match that?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

<Annotation Term="OData.Description"
String="The names of BMCs that are available for pairing." />
<Annotation Term="OData.LongDescription"
String="This property shall contain an array of names of BMCs that are discovered and available for pairing with this BMC. This array may be empty if no BMCs are currently available for pairing." />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is meant here by "names of BMCs"? Is this a Redfish link, DBus object path?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. It is a unique identifier for BMC(String) . In our case it will be "peer" and "self". This will be passed as argument for pairing action.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For clarity I think the long description should specify this level of detail.

<Parameter Name="BmcName" Type="Edm.String" Nullable="false">
<Annotation Term="OData.Description" String="The name of the BMC to pair with." />
<Annotation Term="OData.LongDescription"
String="This parameter shall contain the name or identifier of the BMC to establish pairing with." />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is meant here by name or identifier? Is this a Redfish link, DBus object path?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Its not redfish link. It is a string name (peer or self)

@@ -0,0 +1,84 @@
{
"$id": "http://redfish.dmtf.org/schemas/v1/OemBmcPairing.v1_0_0.json",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this be a bmcweb github path instead?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked with other examples. Yes it should be gi hub path.

},
"AvailableBmcs": {
"description": "The names of BMCs that are available for pairing",
"longDescription": "This property shall contain an array of names of BMCs that are discovered and available for pairing with this BMC. This array may be empty if no BMCs are currently available for pairing.",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same question here on meaning of names

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is answered above

"parameters": {
"BmcName": {
"description": "The name of the BMC to pair with",
"longDescription": "This parameter shall contain the name or identifier of the BMC to establish pairing with.",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same question here on meaning of name

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Answered above

},
"type": "object"
},
"Pair": {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The DMTF schemas define the Actions separately under "Actions". I'm wondering if this should be done similarly?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You have any example for it?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is one of them, I'm seeing it in many of them:

https://redfish.dmtf.org/schemas/v1/Fan.v1_6_0.json

@baemyung

Copy link
Copy Markdown
Contributor

Before going thru the deeper code review, I notified the Oem schema naming (namespace).
It is suggested to use the vendor name as a schema name prefix - https://github.com/openbmc/bmcweb/blob/master/docs/OEM_SCHEMAS.md?plain=1#L86-L92.
So, it would be better to use IBMBmcPairing.json, or I think it may be better to use IBMManagerPairing.json

(BTW, the reason to keep OemUpdateService without renaming is because it has been used externally by the users or customers...and thus decided to leave it as unchanged)

@gtmills gtmills left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's talk more on if we want to go this direction.. I still think we should go with
standard Redfish even if being slightly misused..

Add OemBmcPairing schema to support BMC pairing functionality.
This includes:
- CSDL schema definition (OemBmcPairing_v1.xml)
- JSON schema files (OemBmcPairing.json and OemBmcPairing.v1_0_0.json)
- Meson build configuration update

The schema defines:
- BmcPairing complex type with Paired status and AvailableBmcs list
- Pair action to establish pairing between BMCs

This enables discovery and pairing of multiple BMCs in the system.

Signed-off-by: Abhilash R <abhilash.kollam@gmail.com>
@abhilashraju abhilashraju force-pushed the adding_bmc_pairing_schema branch from b23e143 to 8500066 Compare April 27, 2026 08:45
@abhilashraju

Copy link
Copy Markdown
Contributor Author

Before going thru the deeper code review, I notified the Oem schema naming (namespace). It is suggested to use the vendor name as a schema name prefix - https://github.com/openbmc/bmcweb/blob/master/docs/OEM_SCHEMAS.md?plain=1#L86-L92. So, it would be better to use IBMBmcPairing.json, or I think it may be better to use IBMManagerPairing.json

(BTW, the reason to keep OemUpdateService without renaming is because it has been used externally by the users or customers...and thus decided to leave it as unchanged)

I followed naming used by OemUpdateSerivice

@asmithakarun

Copy link
Copy Markdown
Contributor

Please add how the redfish response and request looks like in the commit message

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants