Skip to content

Commit

Permalink
RedfishClientPkg/Edk2RedfishResourceConfigLib: support config2 protocol
Browse files Browse the repository at this point in the history
-Support Redfish resource config2 protocol in Edk2RedfishResourceConfigLib.
This library will try Redfish resource config2 protocol first. And if
there is no matching protocol found, Redfish resource config protocol will
be used.
-Because EdkIIRedfishResourceConfigLib is updated to support Redfish
resource config2 protocol, update corresponding functions in feature
drivers.

Signed-off-by: Nickle Wang <nicklew@nvidia.com>
Cc: Abner Chang <abner.chang@amd.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Cc: Nick Ramirez <nramirez@nvidia.com>
  • Loading branch information
nicklela committed Mar 7, 2024
1 parent 49dd5cf commit 45f51c3
Show file tree
Hide file tree
Showing 8 changed files with 415 additions and 117 deletions.
14 changes: 7 additions & 7 deletions RedfishClientPkg/Features/Bios/v1_0_9/Common/BiosCommon.c
Original file line number Diff line number Diff line change
Expand Up @@ -782,7 +782,7 @@ HandleResource (

DEBUG ((REDFISH_DEBUG_TRACE, "%a, process resource for: %s\n", __func__, Uri));

Status = GetRedfishSchemaInfo (Private->RedfishService, Private->JsonStructProtocol, Uri, &SchemaInfo);
Status = GetRedfishSchemaInfo (Private->RedfishService, Private->JsonStructProtocol, Uri, NULL, &SchemaInfo);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a, failed to get schema information from: %s %r\n", __func__, Uri, Status));
return Status;
Expand All @@ -795,7 +795,7 @@ HandleResource (
DEBUG ((REDFISH_DEBUG_TRACE, "%a Identify for %s\n", __func__, Uri));
ConfigLang = RedfishGetConfigLanguage (Uri);
if (ConfigLang == NULL) {
Status = EdkIIRedfishResourceConfigIdentify (&SchemaInfo, Uri, Private->InformationExchange);
Status = EdkIIRedfishResourceConfigIdentify (&SchemaInfo, Uri, NULL, Private->InformationExchange);
if (EFI_ERROR (Status)) {
if (Status == EFI_UNSUPPORTED) {
DEBUG ((DEBUG_MANAGEABILITY, "%a, \"%s\" is not handled by us\n", __func__, Uri));
Expand All @@ -811,17 +811,17 @@ HandleResource (
}

//
// Check and see if target property exist or not even when collection memeber exists.
// Check and see if target property exist or not even when collection member exists.
// If not, we sill do provision.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a Check for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
//
// The target property does not exist, do the provision to create property.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a provision for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Uri, Private->InformationExchange, FALSE);
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Uri, NULL, Private->InformationExchange, FALSE);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a, failed to provision with GET mode: %r\n", __func__, Status));
}
Expand All @@ -833,7 +833,7 @@ HandleResource (
// Consume first.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a consume for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigConsume (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigConsume (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a, failed to consume resource for: %s: %r\n", __func__, Uri, Status));
}
Expand All @@ -842,7 +842,7 @@ HandleResource (
// Patch.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a update for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigUpdate (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigUpdate (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a, failed to update resource for: %s: %r\n", __func__, Uri, Status));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ HandleResource (

DEBUG ((REDFISH_BOOT_OPTION_COLLECTION_DEBUG_TRACE, "%a: process resource for: %s\n", __func__, Uri));

Status = GetRedfishSchemaInfo (Private->RedfishService, Private->JsonStructProtocol, Uri, &SchemaInfo);
Status = GetRedfishSchemaInfo (Private->RedfishService, Private->JsonStructProtocol, Uri, NULL, &SchemaInfo);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: failed to get schema information from: %s %r\n", __func__, Uri, Status));
return Status;
Expand All @@ -58,7 +58,7 @@ HandleResource (
SystemRestDetected = FALSE;
ConfigLang = RedfishGetConfigLanguage (Uri);
if (ConfigLang == NULL) {
Status = EdkIIRedfishResourceConfigIdentify (&SchemaInfo, Uri, Private->InformationExchange);
Status = EdkIIRedfishResourceConfigIdentify (&SchemaInfo, Uri, NULL, Private->InformationExchange);
if (EFI_ERROR (Status)) {
if (Status == EFI_UNSUPPORTED) {
DEBUG ((REDFISH_BOOT_OPTION_COLLECTION_DEBUG_TRACE, "%a: \"%s\" is not handled by us\n", __func__, Uri));
Expand Down Expand Up @@ -88,7 +88,7 @@ HandleResource (
// If not, we sill do provision.
//
DEBUG ((REDFISH_BOOT_OPTION_COLLECTION_DEBUG_TRACE, "%a Check for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
if (Status == EFI_UNSUPPORTED) {
DEBUG ((REDFISH_BOOT_OPTION_COLLECTION_DEBUG_TRACE, "%a: \"%s\" is not handled by us\n", __func__, Uri));
Expand All @@ -99,7 +99,7 @@ HandleResource (
// The target property does not exist, do the provision to create property.
//
DEBUG ((REDFISH_BOOT_OPTION_COLLECTION_DEBUG_TRACE, "%a provision for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Uri, Private->InformationExchange, FALSE);
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Uri, NULL, Private->InformationExchange, FALSE);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: failed to provision with GET mode: %r\n", __func__, Status));
}
Expand All @@ -114,7 +114,7 @@ HandleResource (
DEBUG ((REDFISH_BOOT_OPTION_COLLECTION_DEBUG_TRACE, "%a system has been reset to default setting. ignore pending settings because they may be stale values\n", __func__));
} else {
DEBUG ((REDFISH_BOOT_OPTION_COLLECTION_DEBUG_TRACE, "%a consume for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigConsume (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigConsume (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: failed to consume resource for: %s: %r\n", __func__, Uri, Status));
}
Expand All @@ -124,7 +124,7 @@ HandleResource (
// Patch.
//
DEBUG ((REDFISH_BOOT_OPTION_COLLECTION_DEBUG_TRACE, "%a update for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigUpdate (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigUpdate (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: failed to update resource for: %s: %r\n", __func__, Uri, Status));
}
Expand Down Expand Up @@ -262,7 +262,7 @@ CreateCollectionResource (

DEBUG ((REDFISH_BOOT_OPTION_COLLECTION_DEBUG_TRACE, "%a: supported schema: %a %a.%a.%a\n", __func__, SchemaInfo.Schema, SchemaInfo.Major, SchemaInfo.Minor, SchemaInfo.Errata));

Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, BootOptionUri, Private->InformationExchange, TRUE);
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, BootOptionUri, NULL, Private->InformationExchange, TRUE);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: failed to create resource for: %s: %r\n", __func__, BootOptionUri, Status));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ HandleResource (

DEBUG ((REDFISH_DEBUG_TRACE, "%a: process resource for: %s\n", __func__, Uri));

Status = GetRedfishSchemaInfo (Private->RedfishService, Private->JsonStructProtocol, Uri, &SchemaInfo);
Status = GetRedfishSchemaInfo (Private->RedfishService, Private->JsonStructProtocol, Uri, NULL, &SchemaInfo);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: failed to get schema information from: %s %r\n", __func__, Uri, Status));
return Status;
Expand All @@ -48,7 +48,7 @@ HandleResource (
DEBUG ((REDFISH_DEBUG_TRACE, "%a Identify for %s\n", __func__, Uri));
ConfigLang = RedfishGetConfigLanguage (Uri);
if (ConfigLang == NULL) {
Status = EdkIIRedfishResourceConfigIdentify (&SchemaInfo, Uri, Private->InformationExchange);
Status = EdkIIRedfishResourceConfigIdentify (&SchemaInfo, Uri, NULL, Private->InformationExchange);
if (EFI_ERROR (Status)) {
if (Status == EFI_UNSUPPORTED) {
DEBUG ((DEBUG_MANAGEABILITY, "%a: \"%s\" is not handled by us\n", __func__, Uri));
Expand Down Expand Up @@ -90,11 +90,11 @@ HandleResource (
}

//
// Check and see if target property exist or not even when collection memeber exists.
// Check and see if target property exist or not even when collection member exists.
// If not, we sill do provision.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a Check for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
if (Status == EFI_UNSUPPORTED) {
DEBUG ((REDFISH_DEBUG_TRACE, "%a: \"%s\" is not handled by us\n", __func__, Uri));
Expand All @@ -105,7 +105,7 @@ HandleResource (
// The target property does not exist, do the provision to create property.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a provision for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Uri, Private->InformationExchange, FALSE);
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Uri, NULL, Private->InformationExchange, FALSE);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: failed to provision with PATCH mode: %r\n", __func__, Status));
}
Expand All @@ -117,7 +117,7 @@ HandleResource (
// Consume first.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a consume for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigConsume (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigConsume (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: failed to consume resource for: %s: %r\n", __func__, Uri, Status));
}
Expand All @@ -126,7 +126,7 @@ HandleResource (
// Patch.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a update for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigUpdate (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigUpdate (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: failed to update resource for: %s: %r\n", __func__, Uri, Status));
}
Expand Down Expand Up @@ -236,7 +236,7 @@ CreateCollectionResource (

DEBUG ((REDFISH_DEBUG_TRACE, "%a: supported schema: %a %a.%a.%a\n", __func__, SchemaInfo.Schema, SchemaInfo.Major, SchemaInfo.Minor, SchemaInfo.Errata));

Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Private->CollectionUri, Private->InformationExchange, TRUE);
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Private->CollectionUri, NULL, Private->InformationExchange, TRUE);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a: failed to create resource for: %s: %r\n", __func__, Private->CollectionUri, Status));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ HandleResource (

DEBUG ((REDFISH_DEBUG_TRACE, "%a, process resource for: %s\n", __func__, Uri));

Status = GetRedfishSchemaInfo (Private->RedfishService, Private->JsonStructProtocol, Uri, &SchemaInfo);
Status = GetRedfishSchemaInfo (Private->RedfishService, Private->JsonStructProtocol, Uri, NULL, &SchemaInfo);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a, failed to get schema information from: %s %r\n", __func__, Uri, Status));
return Status;
Expand All @@ -48,7 +48,7 @@ HandleResource (
DEBUG ((REDFISH_DEBUG_TRACE, "%a Identify for %s\n", __func__, Uri));
ConfigLang = RedfishGetConfigLanguage (Uri);
if (ConfigLang == NULL) {
Status = EdkIIRedfishResourceConfigIdentify (&SchemaInfo, Uri, Private->InformationExchange);
Status = EdkIIRedfishResourceConfigIdentify (&SchemaInfo, Uri, NULL, Private->InformationExchange);
if (EFI_ERROR (Status)) {
if (Status == EFI_UNSUPPORTED) {
DEBUG ((DEBUG_MANAGEABILITY, "%a, \"%s\" is not handled by us\n", __func__, Uri));
Expand Down Expand Up @@ -86,17 +86,17 @@ HandleResource (
}

//
// Check and see if target property exist or not even when collection memeber exists.
// Check and see if target property exist or not even when collection member exists.
// If not, we sill do provision.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a Check for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigCheck (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
//
// The target property does not exist, do the provision to create property.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a provision for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Uri, Private->InformationExchange, FALSE);
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Uri, NULL, Private->InformationExchange, FALSE);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a, failed to provision with GET mode: %r\n", __func__, Status));
}
Expand All @@ -108,7 +108,7 @@ HandleResource (
// Consume first.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a consume for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigConsume (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigConsume (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a, failed to consume resource for: %s: %r\n", __func__, Uri, Status));
}
Expand All @@ -117,7 +117,7 @@ HandleResource (
// Patch.
//
DEBUG ((REDFISH_DEBUG_TRACE, "%a update for %s\n", __func__, Uri));
Status = EdkIIRedfishResourceConfigUpdate (&SchemaInfo, Uri);
Status = EdkIIRedfishResourceConfigUpdate (&SchemaInfo, Uri, NULL);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a, failed to update resource for: %s: %r\n", __func__, Uri, Status));
}
Expand Down Expand Up @@ -227,7 +227,7 @@ CreateCollectionResource (

DEBUG ((REDFISH_DEBUG_TRACE, "%a, supported schema: %a %a.%a.%a\n", __func__, SchemaInfo.Schema, SchemaInfo.Major, SchemaInfo.Minor, SchemaInfo.Errata));

Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Private->CollectionUri, Private->InformationExchange, TRUE);
Status = EdkIIRedfishResourceConfigProvisioning (&SchemaInfo, Private->CollectionUri, NULL, Private->InformationExchange, TRUE);
if (EFI_ERROR (Status)) {
DEBUG ((DEBUG_ERROR, "%a, failed to create resource for: %s: %r\n", __func__, Private->CollectionUri, Status));
}
Expand Down
Loading

0 comments on commit 45f51c3

Please sign in to comment.