fix: resolve F085 — PveClusterJoinInfo Nodelist/Totem D013 violations

D013 compliance scan found 2 remaining Newtonsoft type exposures:
- PveClusterJoinInfo.Nodelist: JArray → List<Dictionary<string, object?>>
- PveClusterJoinInfo.Totem: JObject → Dictionary<string, object?>

Both now use NativeListConverter/NativeDictionaryConverter for
deserialization. Full D013 compliance report added.

Updated findings.json: F085 status open with scan evidence.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Clint Branham
2026-03-25 11:31:05 -05:00
parent 3ce19a721c
commit 10c277af10
3 changed files with 249 additions and 11 deletions
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PSProxmoxVE.Core.Utilities;
namespace PSProxmoxVE.Core.Models.Cluster;
@@ -17,10 +18,10 @@ public class PveClusterJoinInfo
/// <summary>
/// The list of nodes in the cluster with their connection details.
/// This is a complex nested structure returned as a JArray.
/// </summary>
[JsonProperty("nodelist")]
public JArray? Nodelist { get; set; }
[JsonConverter(typeof(NativeListConverter))]
public List<Dictionary<string, object?>>? Nodelist { get; set; }
/// <summary>
/// The preferred node to connect to when joining.
@@ -29,10 +30,11 @@ public class PveClusterJoinInfo
public string? PreferredNode { get; set; }
/// <summary>
/// The Corosync totem configuration as a raw JSON object.
/// The Corosync totem configuration.
/// </summary>
[JsonProperty("totem")]
public JObject? Totem { get; set; }
[JsonConverter(typeof(NativeDictionaryConverter))]
public Dictionary<string, object?>? Totem { get; set; }
/// <inheritdoc />
public override string ToString()