fix(redfish): narrow MSI PCIeFunctions crawl
This commit is contained in:
@@ -1244,6 +1244,15 @@ func (r redfishSnapshotReader) getLinkedPCIeFunctions(doc map[string]interface{}
|
||||
}
|
||||
return out
|
||||
}
|
||||
if ref, ok := links["PCIeFunction"].(map[string]interface{}); ok {
|
||||
memberPath := asString(ref["@odata.id"])
|
||||
if memberPath != "" {
|
||||
memberDoc, err := r.getJSON(memberPath)
|
||||
if err == nil {
|
||||
return []map[string]interface{}{memberDoc}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if pcieFunctions, ok := doc["PCIeFunctions"].(map[string]interface{}); ok {
|
||||
if collectionPath := asString(pcieFunctions["@odata.id"]); collectionPath != "" {
|
||||
@@ -1256,6 +1265,33 @@ func (r redfishSnapshotReader) getLinkedPCIeFunctions(doc map[string]interface{}
|
||||
return nil
|
||||
}
|
||||
|
||||
func dedupeJSONDocsByPath(docs []map[string]interface{}) []map[string]interface{} {
|
||||
if len(docs) == 0 {
|
||||
return nil
|
||||
}
|
||||
seen := make(map[string]struct{}, len(docs))
|
||||
out := make([]map[string]interface{}, 0, len(docs))
|
||||
for _, doc := range docs {
|
||||
if len(doc) == 0 {
|
||||
continue
|
||||
}
|
||||
key := normalizeRedfishPath(asString(doc["@odata.id"]))
|
||||
if key == "" {
|
||||
payload, err := json.Marshal(doc)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
key = string(payload)
|
||||
}
|
||||
if _, ok := seen[key]; ok {
|
||||
continue
|
||||
}
|
||||
seen[key] = struct{}{}
|
||||
out = append(out, doc)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func (r redfishSnapshotReader) getLinkedSupplementalDocs(doc map[string]interface{}, keys ...string) []map[string]interface{} {
|
||||
if len(doc) == 0 || len(keys) == 0 {
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user