From 142f18af1dd7933562932fcf674e687ef86645e7 Mon Sep 17 00:00:00 2001
From: "goodolclint-claude[bot]"
<323206664+goodolclint-claude[bot]@users.noreply.github.com>
Date: Thu, 3 Sep 2026 16:35:52 +0000
Subject: [PATCH] fix: map PVE failures to typed error records on every cmdlet
(#221)
PveApiException carried the status, resource, method and API message an
ErrorRecord needs, but only about 25 of 194 cmdlets built a record. Every
other failing call escaped into PowerShell's default wrapper, so a 403, a
404 and an unreachable server all arrived as ErrorCategory.NotSpecified
with error id PveApiException and a null TargetObject. $_.CategoryInfo,
-ErrorAction filtering and typed catch blocks had nothing to work with.
The classification is a pure function in PSProxmoxVE.Core so it has an
offline test path: PveErrorMapper.Describe returns a kind, a stable error
id and a target derived from the exception. PveCmdletBase translates the
kind to an ErrorCategory and builds the record.
The try/catch is a template method rather than 194 hand-written blocks:
ProcessRecord is sealed and wraps a new abstract ProcessPveRecord in one
catch filtered by PveErrorMapper.IsRecognized, so only the module's own
exception types are mapped and every other exception reaches the engine
exactly as before, including the ones carrying their own error record.
The 192 cmdlets on the base class rename their override; behaviour stays
terminating, as an escaped exception already was.
Closes #155
Co-authored-by: goodolclint-claude[bot] <323206664+goodolclint-claude[bot]@users.noreply.github.com>
---
src/PSProxmoxVE.Core/Errors/PveErrorMapper.cs | 166 ++++++++++++++++++
.../Cmdlets/Backup/GetPveBackupInfoCmdlet.cs | 2 +-
.../Cmdlets/Backup/GetPveBackupJobCmdlet.cs | 2 +-
.../Cmdlets/Backup/NewPveBackupCmdlet.cs | 2 +-
.../Cmdlets/Backup/NewPveBackupJobCmdlet.cs | 2 +-
.../Backup/RemovePveBackupJobCmdlet.cs | 2 +-
.../Cmdlets/Backup/SetPveBackupJobCmdlet.cs | 2 +-
.../CloudInit/GetPveCloudInitConfigCmdlet.cs | 2 +-
.../InvokePveCloudInitRegenerateCmdlet.cs | 2 +-
.../CloudInit/SetPveCloudInitConfigCmdlet.cs | 2 +-
.../Cluster/AddPveClusterConfigNodeCmdlet.cs | 2 +-
.../Cluster/AddPveClusterMemberCmdlet.cs | 2 +-
.../Cluster/GetPveClusterConfigCmdlet.cs | 2 +-
.../Cluster/GetPveClusterConfigNodeCmdlet.cs | 2 +-
.../Cluster/GetPveClusterJoinInfoCmdlet.cs | 2 +-
.../Cluster/GetPveClusterNextIdCmdlet.cs | 2 +-
.../Cluster/GetPveClusterOptionCmdlet.cs | 2 +-
.../Cluster/GetPveClusterResourceCmdlet.cs | 2 +-
.../Cluster/GetPveClusterStatusCmdlet.cs | 2 +-
.../Cmdlets/Cluster/NewPveClusterCmdlet.cs | 2 +-
.../RemovePveClusterConfigNodeCmdlet.cs | 2 +-
.../Cluster/SetPveClusterOptionCmdlet.cs | 2 +-
.../Connection/DisconnectPveServerCmdlet.cs | 2 +-
.../Containers/CopyPveContainerCmdlet.cs | 2 +-
.../Containers/GetPveContainerCmdlet.cs | 2 +-
.../Containers/GetPveContainerConfigCmdlet.cs | 2 +-
.../GetPveContainerInterfaceCmdlet.cs | 2 +-
.../GetPveContainerSnapshotCmdlet.cs | 2 +-
.../Containers/MovePveContainerCmdlet.cs | 2 +-
.../MovePveContainerVolumeCmdlet.cs | 2 +-
.../Containers/NewPveContainerCmdlet.cs | 2 +-
.../NewPveContainerSnapshotCmdlet.cs | 2 +-
.../NewPveContainerTemplateCmdlet.cs | 2 +-
.../Containers/RemovePveContainerCmdlet.cs | 2 +-
.../RemovePveContainerSnapshotCmdlet.cs | 2 +-
.../ResizePveContainerDiskCmdlet.cs | 2 +-
.../Containers/RestartPveContainerCmdlet.cs | 2 +-
.../RestorePveContainerSnapshotCmdlet.cs | 2 +-
.../Containers/ResumePveContainerCmdlet.cs | 2 +-
.../Containers/SetPveContainerConfigCmdlet.cs | 2 +-
.../Containers/StartPveContainerCmdlet.cs | 2 +-
.../Containers/StopPveContainerCmdlet.cs | 2 +-
.../Containers/SuspendPveContainerCmdlet.cs | 2 +-
.../Firewall/GetPveFirewallAliasCmdlet.cs | 2 +-
.../Firewall/GetPveFirewallGroupCmdlet.cs | 2 +-
.../Firewall/GetPveFirewallIpSetCmdlet.cs | 2 +-
.../GetPveFirewallIpSetEntryCmdlet.cs | 2 +-
.../Firewall/GetPveFirewallOptionsCmdlet.cs | 2 +-
.../Firewall/GetPveFirewallRefCmdlet.cs | 2 +-
.../Firewall/GetPveFirewallRuleCmdlet.cs | 2 +-
.../Firewall/NewPveFirewallAliasCmdlet.cs | 2 +-
.../Firewall/NewPveFirewallGroupCmdlet.cs | 2 +-
.../Firewall/NewPveFirewallIpSetCmdlet.cs | 2 +-
.../NewPveFirewallIpSetEntryCmdlet.cs | 2 +-
.../Firewall/NewPveFirewallRuleCmdlet.cs | 2 +-
.../Firewall/RemovePveFirewallAliasCmdlet.cs | 2 +-
.../Firewall/RemovePveFirewallGroupCmdlet.cs | 2 +-
.../Firewall/RemovePveFirewallIpSetCmdlet.cs | 2 +-
.../RemovePveFirewallIpSetEntryCmdlet.cs | 2 +-
.../Firewall/RemovePveFirewallRuleCmdlet.cs | 2 +-
.../Firewall/SetPveFirewallAliasCmdlet.cs | 2 +-
.../SetPveFirewallIpSetEntryCmdlet.cs | 2 +-
.../Firewall/SetPveFirewallOptionsCmdlet.cs | 2 +-
.../Firewall/SetPveFirewallRuleCmdlet.cs | 2 +-
.../Cmdlets/HA/GetPveHaGroupCmdlet.cs | 2 +-
.../Cmdlets/HA/GetPveHaResourceCmdlet.cs | 2 +-
.../Cmdlets/HA/GetPveHaRuleCmdlet.cs | 2 +-
.../Cmdlets/HA/GetPveHaStatusCmdlet.cs | 2 +-
.../Cmdlets/HA/MovePveHaResourceCmdlet.cs | 2 +-
.../Cmdlets/HA/NewPveHaGroupCmdlet.cs | 2 +-
.../Cmdlets/HA/NewPveHaResourceCmdlet.cs | 2 +-
.../Cmdlets/HA/NewPveHaRuleCmdlet.cs | 2 +-
.../Cmdlets/HA/RemovePveHaGroupCmdlet.cs | 2 +-
.../Cmdlets/HA/RemovePveHaResourceCmdlet.cs | 2 +-
.../Cmdlets/HA/RemovePveHaRuleCmdlet.cs | 2 +-
.../Cmdlets/HA/SetPveHaGroupCmdlet.cs | 2 +-
.../Cmdlets/HA/SetPveHaResourceCmdlet.cs | 2 +-
.../Cmdlets/HA/SetPveHaRuleCmdlet.cs | 2 +-
.../Cmdlets/Network/GetPveNetworkCmdlet.cs | 2 +-
.../Network/GetPveSdnControllerCmdlet.cs | 2 +-
.../Cmdlets/Network/GetPveSdnDnsCmdlet.cs | 2 +-
.../Cmdlets/Network/GetPveSdnIpamCmdlet.cs | 2 +-
.../Cmdlets/Network/GetPveSdnSubnetCmdlet.cs | 2 +-
.../Cmdlets/Network/GetPveSdnVnetCmdlet.cs | 2 +-
.../Cmdlets/Network/GetPveSdnZoneCmdlet.cs | 2 +-
.../Network/InvokePveNetworkApplyCmdlet.cs | 2 +-
.../Network/InvokePveSdnApplyCmdlet.cs | 2 +-
.../Cmdlets/Network/NewPveNetworkCmdlet.cs | 2 +-
.../Network/NewPveSdnControllerCmdlet.cs | 2 +-
.../Cmdlets/Network/NewPveSdnDnsCmdlet.cs | 2 +-
.../Cmdlets/Network/NewPveSdnIpamCmdlet.cs | 2 +-
.../Cmdlets/Network/NewPveSdnSubnetCmdlet.cs | 2 +-
.../Cmdlets/Network/NewPveSdnVnetCmdlet.cs | 2 +-
.../Cmdlets/Network/NewPveSdnZoneCmdlet.cs | 2 +-
.../Cmdlets/Network/RemovePveNetworkCmdlet.cs | 2 +-
.../Network/RemovePveSdnControllerCmdlet.cs | 2 +-
.../Cmdlets/Network/RemovePveSdnDnsCmdlet.cs | 2 +-
.../Cmdlets/Network/RemovePveSdnIpamCmdlet.cs | 2 +-
.../Network/RemovePveSdnSubnetCmdlet.cs | 2 +-
.../Cmdlets/Network/RemovePveSdnVnetCmdlet.cs | 2 +-
.../Cmdlets/Network/RemovePveSdnZoneCmdlet.cs | 2 +-
.../Cmdlets/Network/SetPveNetworkCmdlet.cs | 2 +-
.../Network/SetPveSdnControllerCmdlet.cs | 2 +-
.../Cmdlets/Network/SetPveSdnDnsCmdlet.cs | 2 +-
.../Cmdlets/Network/SetPveSdnIpamCmdlet.cs | 2 +-
.../Cmdlets/Network/SetPveSdnSubnetCmdlet.cs | 2 +-
.../Cmdlets/Network/SetPveSdnVnetCmdlet.cs | 2 +-
.../Cmdlets/Network/SetPveSdnZoneCmdlet.cs | 2 +-
.../Cmdlets/Nodes/GetPveNodeCmdlet.cs | 2 +-
.../Cmdlets/Nodes/GetPveNodeConfigCmdlet.cs | 2 +-
.../Cmdlets/Nodes/GetPveNodeDnsCmdlet.cs | 2 +-
.../Cmdlets/Nodes/GetPveNodeStatusCmdlet.cs | 2 +-
.../Cmdlets/Nodes/SetPveNodeConfigCmdlet.cs | 2 +-
.../Cmdlets/Nodes/SetPveNodeDnsCmdlet.cs | 2 +-
.../Cmdlets/Nodes/StartPveNodeVmsCmdlet.cs | 2 +-
.../Cmdlets/Nodes/StopPveNodeVmsCmdlet.cs | 2 +-
.../Cmdlets/Pools/GetPvePoolCmdlet.cs | 2 +-
.../Cmdlets/Pools/NewPvePoolCmdlet.cs | 2 +-
.../Cmdlets/Pools/RemovePvePoolCmdlet.cs | 2 +-
.../Cmdlets/Pools/SetPvePoolCmdlet.cs | 2 +-
src/PSProxmoxVE/Cmdlets/PveCmdletBase.cs | 59 ++++++-
.../Cmdlets/Snapshots/GetPveSnapshotCmdlet.cs | 2 +-
.../Cmdlets/Snapshots/NewPveSnapshotCmdlet.cs | 2 +-
.../Snapshots/RemovePveSnapshotCmdlet.cs | 2 +-
.../Snapshots/RestorePveSnapshotCmdlet.cs | 2 +-
.../Cmdlets/Storage/GetPveStorageCmdlet.cs | 2 +-
.../Storage/GetPveStorageContentCmdlet.cs | 2 +-
.../Storage/GetPveStorageStatusCmdlet.cs | 2 +-
.../Storage/InvokePveStorageDownloadCmdlet.cs | 2 +-
.../Cmdlets/Storage/NewPveStorageCmdlet.cs | 2 +-
.../Storage/NewPveStorageDiskCmdlet.cs | 2 +-
.../Cmdlets/Storage/RemovePveStorageCmdlet.cs | 2 +-
.../Storage/RemovePveStorageContentCmdlet.cs | 2 +-
.../Cmdlets/Storage/SendPveFileCmdlet.cs | 2 +-
.../Cmdlets/Storage/SetPveStorageCmdlet.cs | 2 +-
.../Storage/SetPveStorageContentCmdlet.cs | 2 +-
.../Cmdlets/Tasks/GetPveTaskCmdlet.cs | 2 +-
.../Cmdlets/Tasks/GetPveTaskListCmdlet.cs | 2 +-
.../Cmdlets/Tasks/StopPveTaskCmdlet.cs | 2 +-
.../Cmdlets/Tasks/WaitPveTaskCmdlet.cs | 2 +-
.../Cmdlets/Templates/GetPveTemplateCmdlet.cs | 2 +-
.../Cmdlets/Templates/NewPveTemplateCmdlet.cs | 2 +-
.../Templates/NewPveVmFromTemplateCmdlet.cs | 2 +-
.../Templates/RemovePveTemplateCmdlet.cs | 2 +-
.../Cmdlets/Users/GetPveApiTokenCmdlet.cs | 2 +-
.../Cmdlets/Users/GetPveDomainCmdlet.cs | 2 +-
.../Cmdlets/Users/GetPveGroupCmdlet.cs | 2 +-
.../Cmdlets/Users/GetPvePermissionCmdlet.cs | 2 +-
.../Cmdlets/Users/GetPveRoleCmdlet.cs | 2 +-
.../Cmdlets/Users/GetPveUserCmdlet.cs | 2 +-
.../Cmdlets/Users/NewPveApiTokenCmdlet.cs | 2 +-
.../Cmdlets/Users/NewPveDomainCmdlet.cs | 2 +-
.../Cmdlets/Users/NewPveGroupCmdlet.cs | 2 +-
.../Cmdlets/Users/NewPveRoleCmdlet.cs | 2 +-
.../Cmdlets/Users/NewPveUserCmdlet.cs | 2 +-
.../Cmdlets/Users/RemovePveApiTokenCmdlet.cs | 2 +-
.../Cmdlets/Users/RemovePveDomainCmdlet.cs | 2 +-
.../Cmdlets/Users/RemovePveGroupCmdlet.cs | 2 +-
.../Cmdlets/Users/RemovePveRoleCmdlet.cs | 2 +-
.../Cmdlets/Users/RemovePveUserCmdlet.cs | 2 +-
.../Cmdlets/Users/SetPveApiTokenCmdlet.cs | 2 +-
.../Cmdlets/Users/SetPveDomainCmdlet.cs | 2 +-
.../Cmdlets/Users/SetPveGroupCmdlet.cs | 2 +-
.../Cmdlets/Users/SetPvePasswordCmdlet.cs | 2 +-
.../Cmdlets/Users/SetPvePermissionCmdlet.cs | 2 +-
.../Cmdlets/Users/SetPveRoleCmdlet.cs | 2 +-
.../Cmdlets/Users/SetPveUserCmdlet.cs | 2 +-
.../Cmdlets/Vms/CopyPveVmCmdlet.cs | 2 +-
src/PSProxmoxVE/Cmdlets/Vms/GetPveVmCmdlet.cs | 2 +-
.../Cmdlets/Vms/GetPveVmConfigCmdlet.cs | 2 +-
.../Cmdlets/Vms/GetPveVmGuestFsInfoCmdlet.cs | 2 +-
.../Cmdlets/Vms/GetPveVmGuestNetworkCmdlet.cs | 2 +-
.../Cmdlets/Vms/GetPveVmGuestOsInfoCmdlet.cs | 2 +-
.../Cmdlets/Vms/ImportPveOvaCmdlet.cs | 2 +-
.../Cmdlets/Vms/ImportPveVmDiskCmdlet.cs | 2 +-
.../Cmdlets/Vms/InvokePveVmGuestExecCmdlet.cs | 2 +-
.../Vms/InvokePveVmGuestFsTrimCmdlet.cs | 2 +-
.../Cmdlets/Vms/MovePveVmCmdlet.cs | 2 +-
.../Cmdlets/Vms/MovePveVmDiskCmdlet.cs | 2 +-
src/PSProxmoxVE/Cmdlets/Vms/NewPveVmCmdlet.cs | 2 +-
.../Cmdlets/Vms/ReadPveVmGuestFileCmdlet.cs | 2 +-
.../Cmdlets/Vms/RemovePveVmCmdlet.cs | 2 +-
.../Cmdlets/Vms/RemovePveVmDiskCmdlet.cs | 2 +-
.../Cmdlets/Vms/ResetPveVmCmdlet.cs | 2 +-
.../Cmdlets/Vms/ResizePveVmDiskCmdlet.cs | 2 +-
.../Cmdlets/Vms/RestartPveVmCmdlet.cs | 2 +-
.../Cmdlets/Vms/ResumePveVmCmdlet.cs | 2 +-
.../Cmdlets/Vms/SetPveVmConfigCmdlet.cs | 2 +-
.../Vms/SetPveVmGuestPasswordCmdlet.cs | 2 +-
.../Cmdlets/Vms/StartPveVmCmdlet.cs | 2 +-
.../Cmdlets/Vms/StopPveVmCmdlet.cs | 2 +-
.../Cmdlets/Vms/SuspendPveVmCmdlet.cs | 2 +-
.../Cmdlets/Vms/TestPveVmGuestAgentCmdlet.cs | 2 +-
.../Cmdlets/Vms/WritePveVmGuestFileCmdlet.cs | 2 +-
.../Errors/PveErrorMapperTests.cs | 142 +++++++++++++++
.../Errors/ErrorRecordMapping.Tests.ps1 | 42 +++++
196 files changed, 598 insertions(+), 195 deletions(-)
create mode 100644 src/PSProxmoxVE.Core/Errors/PveErrorMapper.cs
create mode 100644 tests/PSProxmoxVE.Core.Tests/Errors/PveErrorMapperTests.cs
create mode 100644 tests/PSProxmoxVE.Tests/Errors/ErrorRecordMapping.Tests.ps1
diff --git a/src/PSProxmoxVE.Core/Errors/PveErrorMapper.cs b/src/PSProxmoxVE.Core/Errors/PveErrorMapper.cs
new file mode 100644
index 0000000..2cf00f8
--- /dev/null
+++ b/src/PSProxmoxVE.Core/Errors/PveErrorMapper.cs
@@ -0,0 +1,166 @@
+using System;
+using System.Globalization;
+using System.Net;
+using PSProxmoxVE.Core.Exceptions;
+
+namespace PSProxmoxVE.Core.Errors
+{
+ ///
+ /// The error classifications this module reports. Every member name is also the name of a
+ /// System.Management.Automation.ErrorCategory member, so the cmdlet layer can
+ /// translate a kind without inventing a second vocabulary.
+ ///
+ public enum PveErrorKind
+ {
+ /// The failure was not recognised and carries no classification.
+ NotSpecified,
+
+ /// The caller lacks the privilege or the credential the operation needs.
+ PermissionDenied,
+
+ /// The credential was rejected because the session is no longer valid.
+ AuthenticationError,
+
+ /// The addressed object does not exist on the server.
+ ObjectNotFound,
+
+ /// The server rejected the request payload or a parameter value.
+ InvalidArgument,
+
+ /// The operation did not complete inside its time budget.
+ OperationTimeout,
+
+ /// The server could not be reached, or no session is established.
+ ConnectionError,
+
+ /// The server was reached but cannot service the request.
+ ResourceUnavailable,
+
+ /// The operation is not valid for the server or object in its current state.
+ InvalidOperation,
+
+ /// The operation started and then stopped without completing.
+ OperationStopped,
+ }
+
+ /// The classification and error identifier derived from a failure.
+ public sealed class PveErrorDescriptor
+ {
+ /// Initializes a new descriptor.
+ /// The classification of the failure.
+ /// The stable identifier a script can match on.
+ /// The object the failure is about, or null when none is known.
+ public PveErrorDescriptor(PveErrorKind kind, string errorId, object? target)
+ {
+ Kind = kind;
+ ErrorId = errorId;
+ Target = target;
+ }
+
+ /// The classification of the failure.
+ public PveErrorKind Kind { get; }
+
+ /// The stable identifier a script can match on, for example PveApi.404.nodes/pve1/qemu/100.
+ public string ErrorId { get; }
+
+ /// The object the failure is about, derived from the exception when the caller supplied none.
+ public object? Target { get; }
+ }
+
+ /// Maps a module exception to the classification and identifier reported to PowerShell.
+ public static class PveErrorMapper
+ {
+ private const string ApiErrorIdPrefix = "PveApi";
+
+ ///
+ /// Reports whether is one this module classifies. An
+ /// exception that is not recognised must reach the PowerShell engine untouched: it may
+ /// carry its own error record, or be a flow-control or fatal exception.
+ ///
+ /// The failure to test.
+ /// True when classifies the exception.
+ public static bool IsRecognized(Exception exception)
+ => exception is PveApiException
+ or PveNotConnectedException
+ or PveSessionExpiredException
+ or PveTaskFailedException
+ or PveTaskTimeoutException
+ or PveVersionException;
+
+ /// Classifies and derives its error identifier and target.
+ /// The failure to classify.
+ /// The classification, error identifier and derived target.
+ public static PveErrorDescriptor Describe(Exception exception)
+ {
+ if (exception is null) throw new ArgumentNullException(nameof(exception));
+
+ switch (exception)
+ {
+ case PveApiException api:
+ return new PveErrorDescriptor(KindForStatus(api.StatusCode), ApiErrorId(api), NullIfBlank(api.Resource));
+
+ case PveNotConnectedException:
+ return new PveErrorDescriptor(PveErrorKind.ConnectionError, "PveNotConnected", null);
+
+ case PveSessionExpiredException:
+ return new PveErrorDescriptor(PveErrorKind.AuthenticationError, "PveSessionExpired", null);
+
+ case PveTaskFailedException taskFailed:
+ return new PveErrorDescriptor(PveErrorKind.OperationStopped, "PveTaskFailed", NullIfBlank(taskFailed.Upid));
+
+ case PveTaskTimeoutException taskTimeout:
+ return new PveErrorDescriptor(PveErrorKind.OperationTimeout, "PveTaskTimeout", NullIfBlank(taskTimeout.Upid));
+
+ case PveVersionException:
+ return new PveErrorDescriptor(PveErrorKind.InvalidOperation, "PveVersionTooOld", null);
+
+ default:
+ return new PveErrorDescriptor(PveErrorKind.NotSpecified, exception.GetType().Name, null);
+ }
+ }
+
+ private static PveErrorKind KindForStatus(HttpStatusCode status)
+ {
+ switch (status)
+ {
+ case HttpStatusCode.BadRequest:
+ return PveErrorKind.InvalidArgument;
+
+ // 401 is a rejected or expired ticket, which the module also reports as
+ // PveSessionExpiredException; 403 is a privilege the ticket does not carry.
+ case HttpStatusCode.Unauthorized:
+ return PveErrorKind.AuthenticationError;
+
+ case HttpStatusCode.Forbidden:
+ return PveErrorKind.PermissionDenied;
+
+ case HttpStatusCode.NotFound:
+ return PveErrorKind.ObjectNotFound;
+
+ case HttpStatusCode.RequestTimeout:
+ case HttpStatusCode.GatewayTimeout:
+ return PveErrorKind.OperationTimeout;
+
+ // PveHttpClient reports a failed connection as 503, so 503 is a reachability
+ // failure here and not the server's own "try again later".
+ case HttpStatusCode.ServiceUnavailable:
+ return PveErrorKind.ConnectionError;
+ }
+
+ var code = (int)status;
+ if (code >= 500 && code <= 599) return PveErrorKind.ResourceUnavailable;
+ return PveErrorKind.InvalidOperation;
+ }
+
+ private static string ApiErrorId(PveApiException exception)
+ {
+ var status = ((int)exception.StatusCode).ToString(CultureInfo.InvariantCulture);
+ return string.IsNullOrWhiteSpace(exception.Resource)
+ ? $"{ApiErrorIdPrefix}.{status}"
+ : $"{ApiErrorIdPrefix}.{status}.{exception.Resource}";
+ }
+
+ private static object? NullIfBlank(string? value)
+ => string.IsNullOrWhiteSpace(value) ? null : value;
+ }
+}
diff --git a/src/PSProxmoxVE/Cmdlets/Backup/GetPveBackupInfoCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Backup/GetPveBackupInfoCmdlet.cs
index a1e4835..99d68a9 100644
--- a/src/PSProxmoxVE/Cmdlets/Backup/GetPveBackupInfoCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Backup/GetPveBackupInfoCmdlet.cs
@@ -15,7 +15,7 @@ namespace PSProxmoxVE.Cmdlets.Backup
[OutputType(typeof(PSObject))]
public sealed class GetPveBackupInfoCmdlet : PveCmdletBase
{
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "Backup compliance info", 7, 0);
diff --git a/src/PSProxmoxVE/Cmdlets/Backup/GetPveBackupJobCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Backup/GetPveBackupJobCmdlet.cs
index 183e8b1..c14d4ae 100644
--- a/src/PSProxmoxVE/Cmdlets/Backup/GetPveBackupJobCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Backup/GetPveBackupJobCmdlet.cs
@@ -21,7 +21,7 @@ namespace PSProxmoxVE.Cmdlets.Backup
[Parameter(Mandatory = false, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "The backup job ID.")]
public string? Id { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new BackupService();
diff --git a/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupCmdlet.cs
index 50c98b3..3c9cb1a 100644
--- a/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupCmdlet.cs
@@ -63,7 +63,7 @@ namespace PSProxmoxVE.Cmdlets.Backup
[Parameter(Mandatory = false, HelpMessage = "Timeout in seconds for -Wait (default 3600).")]
public int Timeout { get; set; } = 3600;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", "New-PveBackup"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupJobCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupJobCmdlet.cs
index 5daf7c5..dca3929 100644
--- a/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupJobCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Backup/NewPveBackupJobCmdlet.cs
@@ -91,7 +91,7 @@ namespace PSProxmoxVE.Cmdlets.Backup
[Parameter(Mandatory = false, HelpMessage = "Prune-backups configuration string.")]
public string? PruneBackups { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess("cluster backup configuration", "New-PveBackupJob"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Backup/RemovePveBackupJobCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Backup/RemovePveBackupJobCmdlet.cs
index 4a93da0..85acfe6 100644
--- a/src/PSProxmoxVE/Cmdlets/Backup/RemovePveBackupJobCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Backup/RemovePveBackupJobCmdlet.cs
@@ -22,7 +22,7 @@ namespace PSProxmoxVE.Cmdlets.Backup
[Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "The backup job ID.")]
public string Id { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"backup job '{Id}'", "Remove-PveBackupJob"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Backup/SetPveBackupJobCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Backup/SetPveBackupJobCmdlet.cs
index 0d710d1..2bacf7b 100644
--- a/src/PSProxmoxVE/Cmdlets/Backup/SetPveBackupJobCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Backup/SetPveBackupJobCmdlet.cs
@@ -96,7 +96,7 @@ namespace PSProxmoxVE.Cmdlets.Backup
[Parameter(Mandatory = false, HelpMessage = "Prune-backups configuration string.")]
public string? PruneBackups { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"backup job '{Id}'", "Set-PveBackupJob"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/CloudInit/GetPveCloudInitConfigCmdlet.cs b/src/PSProxmoxVE/Cmdlets/CloudInit/GetPveCloudInitConfigCmdlet.cs
index 7d74299..a217351 100644
--- a/src/PSProxmoxVE/Cmdlets/CloudInit/GetPveCloudInitConfigCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/CloudInit/GetPveCloudInitConfigCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.CloudInit
[ValidateRange(100, 999999999)]
public int VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "Cloud-Init management", 7, 2);
diff --git a/src/PSProxmoxVE/Cmdlets/CloudInit/InvokePveCloudInitRegenerateCmdlet.cs b/src/PSProxmoxVE/Cmdlets/CloudInit/InvokePveCloudInitRegenerateCmdlet.cs
index 6a6da6b..e511d1c 100644
--- a/src/PSProxmoxVE/Cmdlets/CloudInit/InvokePveCloudInitRegenerateCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/CloudInit/InvokePveCloudInitRegenerateCmdlet.cs
@@ -30,7 +30,7 @@ namespace PSProxmoxVE.Cmdlets.CloudInit
[Parameter(HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on {Node}", "Regenerate PVE Cloud-Init Drive"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/CloudInit/SetPveCloudInitConfigCmdlet.cs b/src/PSProxmoxVE/Cmdlets/CloudInit/SetPveCloudInitConfigCmdlet.cs
index 889880f..0e3482e 100644
--- a/src/PSProxmoxVE/Cmdlets/CloudInit/SetPveCloudInitConfigCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/CloudInit/SetPveCloudInitConfigCmdlet.cs
@@ -65,7 +65,7 @@ namespace PSProxmoxVE.Cmdlets.CloudInit
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "Cloud-Init management", 7, 2);
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/AddPveClusterConfigNodeCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/AddPveClusterConfigNodeCmdlet.cs
index d073237..08d1b60 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/AddPveClusterConfigNodeCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/AddPveClusterConfigNodeCmdlet.cs
@@ -51,7 +51,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"node '{Node}'", "Add to cluster configuration"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/AddPveClusterMemberCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/AddPveClusterMemberCmdlet.cs
index a8735b6..25fe5fc 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/AddPveClusterMemberCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/AddPveClusterMemberCmdlet.cs
@@ -61,7 +61,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
private const int ReauthMaxAttempts = 10;
private const int ReauthDelayMs = 3000;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"this node to cluster via '{Hostname}'", "Join cluster"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterConfigCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterConfigCmdlet.cs
index 63daee8..21e0c6f 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterConfigCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterConfigCmdlet.cs
@@ -15,7 +15,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[OutputType(typeof(Dictionary))]
public sealed class GetPveClusterConfigCmdlet : PveCmdletBase
{
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new ClusterConfigService();
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterConfigNodeCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterConfigNodeCmdlet.cs
index b89be61..0de32c2 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterConfigNodeCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterConfigNodeCmdlet.cs
@@ -15,7 +15,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[OutputType(typeof(PveClusterConfigNode))]
public sealed class GetPveClusterConfigNodeCmdlet : PveCmdletBase
{
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new ClusterConfigService();
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterJoinInfoCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterJoinInfoCmdlet.cs
index a4a1dcb..6cca588 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterJoinInfoCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterJoinInfoCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[Parameter(Mandatory = false, Position = 0, HelpMessage = "Node to get join info for (defaults to current).")]
public string? Node { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new ClusterConfigService();
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterNextIdCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterNextIdCmdlet.cs
index 413da3f..98eac68 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterNextIdCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterNextIdCmdlet.cs
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[ValidateRange(100, 999999999)]
public int? VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new ClusterConfigService();
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterOptionCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterOptionCmdlet.cs
index 66e4f48..94e20e5 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterOptionCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterOptionCmdlet.cs
@@ -15,7 +15,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[OutputType(typeof(PveClusterOptions))]
public sealed class GetPveClusterOptionCmdlet : PveCmdletBase
{
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new ClusterConfigService();
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterResourceCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterResourceCmdlet.cs
index f2ef8ff..b1a657e 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterResourceCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterResourceCmdlet.cs
@@ -29,7 +29,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[Parameter(Mandatory = false, HelpMessage = "Filter results to a specific node name.")]
public string? Node { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new ClusterService();
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterStatusCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterStatusCmdlet.cs
index c9dbb7a..b5c3663 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterStatusCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/GetPveClusterStatusCmdlet.cs
@@ -15,7 +15,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[OutputType(typeof(PveClusterStatus))]
public sealed class GetPveClusterStatusCmdlet : PveCmdletBase
{
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new ClusterService();
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/NewPveClusterCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/NewPveClusterCmdlet.cs
index 4a485a9..35c2b86 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/NewPveClusterCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/NewPveClusterCmdlet.cs
@@ -46,7 +46,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 60;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"cluster '{ClusterName}'", "Create new cluster"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/RemovePveClusterConfigNodeCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/RemovePveClusterConfigNodeCmdlet.cs
index 675f86e..f887e9f 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/RemovePveClusterConfigNodeCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/RemovePveClusterConfigNodeCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The cluster node name to remove.")]
public string Node { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"node '{Node}'", "Remove from cluster configuration"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Cluster/SetPveClusterOptionCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Cluster/SetPveClusterOptionCmdlet.cs
index 5d47e7b..405a263 100644
--- a/src/PSProxmoxVE/Cmdlets/Cluster/SetPveClusterOptionCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Cluster/SetPveClusterOptionCmdlet.cs
@@ -65,7 +65,7 @@ namespace PSProxmoxVE.Cmdlets.Cluster
[Parameter(Mandatory = false, HelpMessage = "Comma-separated list of settings to delete/reset.")]
public string? Delete { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess("cluster options", "Set"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Connection/DisconnectPveServerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Connection/DisconnectPveServerCmdlet.cs
index b31af64..1b9185b 100644
--- a/src/PSProxmoxVE/Cmdlets/Connection/DisconnectPveServerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Connection/DisconnectPveServerCmdlet.cs
@@ -16,7 +16,7 @@ namespace PSProxmoxVE.Cmdlets.Connection
[Alias("dpve")]
public sealed class DisconnectPveServerCmdlet : PveCmdletBase
{
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
bool explicitSessionSupplied = MyInvocation.BoundParameters.ContainsKey(nameof(Session));
var sessionToDisconnect = explicitSessionSupplied ? Session : ModuleState.ActiveSession;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/CopyPveContainerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/CopyPveContainerCmdlet.cs
index 54f2394..1bece33 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/CopyPveContainerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/CopyPveContainerCmdlet.cs
@@ -70,7 +70,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var target = TargetNode ?? SourceNode;
if (!ShouldProcess($"Container {VmId} on node '{SourceNode}' to new container on node '{target}'", "Copy-PveContainer"))
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerCmdlet.cs
index 6c7e5b4..a2808ea 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerCmdlet.cs
@@ -52,7 +52,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Filter by tag.")]
public string? Tag { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerConfigCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerConfigCmdlet.cs
index de3d263..44b4c83 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerConfigCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerConfigCmdlet.cs
@@ -30,7 +30,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[ValidateRange(100, 999999999)]
public int VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var containerService = new ContainerService();
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerInterfaceCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerInterfaceCmdlet.cs
index 965f4b0..090122a 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerInterfaceCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerInterfaceCmdlet.cs
@@ -24,7 +24,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[ValidateRange(100, 999999999)]
public int VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "Container interface listing", 8, 1);
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerSnapshotCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerSnapshotCmdlet.cs
index d8cf495..5a1a8a8 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerSnapshotCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/GetPveContainerSnapshotCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Filter by snapshot name.")]
public string? Name { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/MovePveContainerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/MovePveContainerCmdlet.cs
index f7ce0f0..26f3675 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/MovePveContainerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/MovePveContainerCmdlet.cs
@@ -40,7 +40,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Container {VmId} from node '{Node}' to node '{TargetNode}'", "Move-PveContainer"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/MovePveContainerVolumeCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/MovePveContainerVolumeCmdlet.cs
index 3ed2ec3..1f4b455 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/MovePveContainerVolumeCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/MovePveContainerVolumeCmdlet.cs
@@ -53,7 +53,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Volume '{Volume}' on container {VmId} (node '{Node}') to storage '{Storage}'", "Move-PveContainerVolume"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerCmdlet.cs
index aef0360..f14fc30 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerCmdlet.cs
@@ -125,7 +125,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
// Validate -RootFsSize before ShouldProcess so typos like "512M" are rejected
// even with -WhatIf, and so the error is raised regardless of whether
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerSnapshotCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerSnapshotCmdlet.cs
index 433eb2c..233f115 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerSnapshotCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerSnapshotCmdlet.cs
@@ -36,7 +36,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Container {VmId} on {Node}", $"Create snapshot '{Name}'"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerTemplateCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerTemplateCmdlet.cs
index 5c60e6c..0abdf94 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerTemplateCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/NewPveContainerTemplateCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[ValidateRange(100, 999999999)]
public int VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Container {VmId} on node '{Node}'", "New-PveContainerTemplate"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/RemovePveContainerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/RemovePveContainerCmdlet.cs
index e45a4de..a8b120d 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/RemovePveContainerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/RemovePveContainerCmdlet.cs
@@ -54,7 +54,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Container {VmId} on node '{Node}'", "Remove-PveContainer"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/RemovePveContainerSnapshotCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/RemovePveContainerSnapshotCmdlet.cs
index 68f9e3e..b736298 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/RemovePveContainerSnapshotCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/RemovePveContainerSnapshotCmdlet.cs
@@ -34,7 +34,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/ResizePveContainerDiskCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/ResizePveContainerDiskCmdlet.cs
index 0571b55..a545f83 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/ResizePveContainerDiskCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/ResizePveContainerDiskCmdlet.cs
@@ -44,7 +44,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = true, HelpMessage = "New disk size (e.g. 50G or +5G to grow).")]
public string Size { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Disk '{Disk}' on container {VmId} (node '{Node}') to size '{Size}'", "Resize-PveContainerDisk"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/RestartPveContainerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/RestartPveContainerCmdlet.cs
index 48a5040..3970f81 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/RestartPveContainerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/RestartPveContainerCmdlet.cs
@@ -46,7 +46,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Container {VmId} on node '{Node}'", "Restart-PveContainer"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/RestorePveContainerSnapshotCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/RestorePveContainerSnapshotCmdlet.cs
index 9873027..30ea5e0 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/RestorePveContainerSnapshotCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/RestorePveContainerSnapshotCmdlet.cs
@@ -37,7 +37,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/ResumePveContainerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/ResumePveContainerCmdlet.cs
index ccc814c..52b1aa4 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/ResumePveContainerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/ResumePveContainerCmdlet.cs
@@ -39,7 +39,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 60;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Container {VmId} on node '{Node}'", "Resume-PveContainer"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/SetPveContainerConfigCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/SetPveContainerConfigCmdlet.cs
index cfdb66a..7cc6887 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/SetPveContainerConfigCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/SetPveContainerConfigCmdlet.cs
@@ -99,7 +99,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[Parameter(Mandatory = false, HelpMessage = "Comma-separated config keys to delete.")]
public string? Delete { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Container {VmId} on node '{Node}'", "Set-PveContainerConfig"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/StartPveContainerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/StartPveContainerCmdlet.cs
index 86bdf1d..277e671 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/StartPveContainerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/StartPveContainerCmdlet.cs
@@ -41,7 +41,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 60;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Container {VmId} on node '{Node}'", "Start-PveContainer"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/StopPveContainerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/StopPveContainerCmdlet.cs
index 1729594..facb539 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/StopPveContainerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/StopPveContainerCmdlet.cs
@@ -43,7 +43,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 60;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Container {VmId} on node '{Node}'", "Stop-PveContainer"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Containers/SuspendPveContainerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Containers/SuspendPveContainerCmdlet.cs
index 97e74da..dba35bc 100644
--- a/src/PSProxmoxVE/Cmdlets/Containers/SuspendPveContainerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Containers/SuspendPveContainerCmdlet.cs
@@ -39,7 +39,7 @@ namespace PSProxmoxVE.Cmdlets.Containers
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 60;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Container {VmId} on node '{Node}'", "Suspend-PveContainer"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallAliasCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallAliasCmdlet.cs
index 5812cfe..9db2c8c 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallAliasCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallAliasCmdlet.cs
@@ -24,7 +24,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Optional alias name to filter by.")]
public string? Name { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallGroupCmdlet.cs
index cf65456..8d8283c 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallGroupCmdlet.cs
@@ -12,7 +12,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, Position = 0, HelpMessage = "The security group name. If specified, returns rules within the group.")]
public string? Group { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new FirewallService();
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallIpSetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallIpSetCmdlet.cs
index ad92a53..2d6105f 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallIpSetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallIpSetCmdlet.cs
@@ -24,7 +24,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Optional IP set name to filter by.")]
public string? Name { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallIpSetEntryCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallIpSetEntryCmdlet.cs
index 6b7d860..c9879d8 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallIpSetEntryCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallIpSetEntryCmdlet.cs
@@ -22,7 +22,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = true, HelpMessage = "The IP set name.")]
public string Name { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallOptionsCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallOptionsCmdlet.cs
index ea7b238..fde5e07 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallOptionsCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallOptionsCmdlet.cs
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[ValidateRange(100, 999999999)]
public int? VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallRefCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallRefCmdlet.cs
index 55ab7b0..1ee269c 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallRefCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallRefCmdlet.cs
@@ -22,7 +22,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Optional type filter for references.")]
public string? Type { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallRuleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallRuleCmdlet.cs
index 0d822c5..1405495 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallRuleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/GetPveFirewallRuleCmdlet.cs
@@ -27,7 +27,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Optional rule position to filter by.")]
public int? Position { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, Group, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallAliasCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallAliasCmdlet.cs
index 220baac..6d91108 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallAliasCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallAliasCmdlet.cs
@@ -28,7 +28,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Optional comment for the alias.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallGroupCmdlet.cs
index 47d76ff..cab42f8 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallGroupCmdlet.cs
@@ -15,7 +15,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Optional comment for the security group.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"firewall security group '{Group}'", "Create"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallIpSetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallIpSetCmdlet.cs
index 0556ff5..a6c639f 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallIpSetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallIpSetCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Optional comment for the IP set.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallIpSetEntryCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallIpSetEntryCmdlet.cs
index 0e0f20e..ef50d54 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallIpSetEntryCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallIpSetEntryCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Optional comment for the entry.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallRuleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallRuleCmdlet.cs
index 3d321f1..6348be7 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallRuleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/NewPveFirewallRuleCmdlet.cs
@@ -62,7 +62,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Network interface.")]
public string? Iface { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, Group, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallAliasCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallAliasCmdlet.cs
index 5591ad2..c6f119d 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallAliasCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallAliasCmdlet.cs
@@ -22,7 +22,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = true, HelpMessage = "The alias name to remove.")]
public string Name { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallGroupCmdlet.cs
index 9b0413f..1e396ac 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallGroupCmdlet.cs
@@ -12,7 +12,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = true, Position = 0, HelpMessage = "The security group name to remove.")]
public string Group { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"firewall security group '{Group}'", "Remove"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallIpSetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallIpSetCmdlet.cs
index e2af61e..45e4d75 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallIpSetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallIpSetCmdlet.cs
@@ -22,7 +22,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = true, HelpMessage = "The IP set name to remove.")]
public string Name { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallIpSetEntryCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallIpSetEntryCmdlet.cs
index a2e95a9..17cfbde 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallIpSetEntryCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallIpSetEntryCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = true, HelpMessage = "The CIDR network address to remove.")]
public string Cidr { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallRuleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallRuleCmdlet.cs
index 3c289e4..ce76d37 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallRuleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/RemovePveFirewallRuleCmdlet.cs
@@ -26,7 +26,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = true, HelpMessage = "The rule position to remove.")]
public int Position { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, Group, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallAliasCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallAliasCmdlet.cs
index 582f79c..d9e1413 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallAliasCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallAliasCmdlet.cs
@@ -28,7 +28,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Updated comment for the alias.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallIpSetEntryCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallIpSetEntryCmdlet.cs
index 504e15b..8afa2dc 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallIpSetEntryCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallIpSetEntryCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Updated comment for the entry.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallOptionsCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallOptionsCmdlet.cs
index 947ad9d..617ed70 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallOptionsCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallOptionsCmdlet.cs
@@ -49,7 +49,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Enable IP filter.")]
public SwitchParameter IpFilter { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, null, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallRuleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallRuleCmdlet.cs
index de2e880..45374d7 100644
--- a/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallRuleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Firewall/SetPveFirewallRuleCmdlet.cs
@@ -65,7 +65,7 @@ namespace PSProxmoxVE.Cmdlets.Firewall
[Parameter(Mandatory = false, HelpMessage = "Network interface.")]
public string? Iface { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var level = Level;
if (!FirewallScope.TryValidate(level, Node, VmId, Group, out var scopeErrorId, out var scopeMessage))
diff --git a/src/PSProxmoxVE/Cmdlets/HA/GetPveHaGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/GetPveHaGroupCmdlet.cs
index eab7fab..c981feb 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/GetPveHaGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/GetPveHaGroupCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.HA
HelpMessage = "HA group name. Omit to list all groups.")]
public string? Group { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new HaService();
diff --git a/src/PSProxmoxVE/Cmdlets/HA/GetPveHaResourceCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/GetPveHaResourceCmdlet.cs
index 9318125..6f35531 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/GetPveHaResourceCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/GetPveHaResourceCmdlet.cs
@@ -21,7 +21,7 @@ namespace PSProxmoxVE.Cmdlets.HA
HelpMessage = "Service ID (e.g. 'vm:100', 'ct:200'). Omit to list all.")]
public string? Sid { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new HaService();
diff --git a/src/PSProxmoxVE/Cmdlets/HA/GetPveHaRuleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/GetPveHaRuleCmdlet.cs
index a7395ed..d188bfb 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/GetPveHaRuleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/GetPveHaRuleCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.HA
HelpMessage = "HA rule ID. Omit to list all rules.")]
public string? Rule { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "HA Rules", 9, 0);
diff --git a/src/PSProxmoxVE/Cmdlets/HA/GetPveHaStatusCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/GetPveHaStatusCmdlet.cs
index 586b302..3e30f51 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/GetPveHaStatusCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/GetPveHaStatusCmdlet.cs
@@ -15,7 +15,7 @@ namespace PSProxmoxVE.Cmdlets.HA
[OutputType(typeof(PveHaStatus))]
public sealed class GetPveHaStatusCmdlet : PveCmdletBase
{
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new HaService();
diff --git a/src/PSProxmoxVE/Cmdlets/HA/MovePveHaResourceCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/MovePveHaResourceCmdlet.cs
index 413fb39..7f4bff7 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/MovePveHaResourceCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/MovePveHaResourceCmdlet.cs
@@ -30,7 +30,7 @@ namespace PSProxmoxVE.Cmdlets.HA
[ValidateSet("Migrate", "Relocate")]
public string Mode { get; set; } = "Migrate";
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"HA resource '{Sid}' to node '{Node}'", $"{Mode}"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/HA/NewPveHaGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/NewPveHaGroupCmdlet.cs
index 21dd425..5dbde1c 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/NewPveHaGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/NewPveHaGroupCmdlet.cs
@@ -35,7 +35,7 @@ namespace PSProxmoxVE.Cmdlets.HA
[Parameter(Mandatory = false, HelpMessage = "Description or comment.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"HA group '{Group}'", "Create"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/HA/NewPveHaResourceCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/NewPveHaResourceCmdlet.cs
index a20781d..ae8f7f9 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/NewPveHaResourceCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/NewPveHaResourceCmdlet.cs
@@ -42,7 +42,7 @@ namespace PSProxmoxVE.Cmdlets.HA
[Parameter(Mandatory = false, HelpMessage = "Description or comment.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"HA resource '{Sid}'", "Create"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/HA/NewPveHaRuleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/NewPveHaRuleCmdlet.cs
index ad53281..221d290 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/NewPveHaRuleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/NewPveHaRuleCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.HA
[Parameter(Mandatory = false, HelpMessage = "Additional rule properties.")]
public System.Collections.Hashtable? Properties { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "HA Rules", 9, 0);
diff --git a/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaGroupCmdlet.cs
index 121b70b..d028993 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaGroupCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.HA
HelpMessage = "HA group name to delete.")]
public string Group { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"HA group '{Group}'", "Delete"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaResourceCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaResourceCmdlet.cs
index c6897de..53b3e4b 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaResourceCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaResourceCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.HA
HelpMessage = "Service ID (e.g. 'vm:100', 'ct:200').")]
public string Sid { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"HA resource '{Sid}'", "Remove from HA management"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaRuleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaRuleCmdlet.cs
index c722297..b1fbe2f 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaRuleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/RemovePveHaRuleCmdlet.cs
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.HA
HelpMessage = "HA rule ID to delete.")]
public string Rule { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "HA Rules", 9, 0);
diff --git a/src/PSProxmoxVE/Cmdlets/HA/SetPveHaGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/SetPveHaGroupCmdlet.cs
index 69ac363..e79fa52 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/SetPveHaGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/SetPveHaGroupCmdlet.cs
@@ -37,7 +37,7 @@ namespace PSProxmoxVE.Cmdlets.HA
[Parameter(Mandatory = false, HelpMessage = "Description or comment.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"HA group '{Group}'", "Update"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/HA/SetPveHaResourceCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/SetPveHaResourceCmdlet.cs
index 9c3b0a5..df804b2 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/SetPveHaResourceCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/SetPveHaResourceCmdlet.cs
@@ -43,7 +43,7 @@ namespace PSProxmoxVE.Cmdlets.HA
[Parameter(Mandatory = false, HelpMessage = "Description or comment.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"HA resource '{Sid}'", "Update"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/HA/SetPveHaRuleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/HA/SetPveHaRuleCmdlet.cs
index 4f6f181..f4b9658 100644
--- a/src/PSProxmoxVE/Cmdlets/HA/SetPveHaRuleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/HA/SetPveHaRuleCmdlet.cs
@@ -36,7 +36,7 @@ namespace PSProxmoxVE.Cmdlets.HA
[Parameter(Mandatory = false, HelpMessage = "Additional rule properties.")]
public System.Collections.Hashtable? Properties { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "HA Rules", 9, 0);
diff --git a/src/PSProxmoxVE/Cmdlets/Network/GetPveNetworkCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/GetPveNetworkCmdlet.cs
index 4ad82a2..2c5a720 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/GetPveNetworkCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/GetPveNetworkCmdlet.cs
@@ -32,7 +32,7 @@ namespace PSProxmoxVE.Cmdlets.Network
"OVSPort", "OVSIntPort", "any_bridge", "any_local_bridge", IgnoreCase = true)]
public string? Type { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnControllerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnControllerCmdlet.cs
index 12b689f..668adda 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnControllerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnControllerCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, Position = 0, HelpMessage = "Filter by controller identifier.")]
public string? Controller { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "SDN IPAM/DNS/Controller", 6, 2, 8, 1);
diff --git a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnDnsCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnDnsCmdlet.cs
index 0404e3d..6e03c94 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnDnsCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnDnsCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, Position = 0, HelpMessage = "Filter by DNS plugin identifier.")]
public string? Dns { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "SDN IPAM/DNS/Controller", 6, 2, 8, 1);
diff --git a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnIpamCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnIpamCmdlet.cs
index eaef110..0b566f6 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnIpamCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnIpamCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, Position = 0, HelpMessage = "Filter by IPAM plugin identifier.")]
public string? Ipam { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "SDN IPAM/DNS/Controller", 6, 2, 8, 1);
diff --git a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnSubnetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnSubnetCmdlet.cs
index 6186720..c43a242 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnSubnetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnSubnetCmdlet.cs
@@ -23,7 +23,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "Filter by subnet CIDR (e.g. 10.0.0.0/24).")]
public string? Subnet { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "SDN", 6, 2, 8, 0);
diff --git a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnVnetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnVnetCmdlet.cs
index ebc9995..c018b59 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnVnetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnVnetCmdlet.cs
@@ -23,7 +23,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "The SDN VNet name.")]
public string? Vnet { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "SDN", 6, 2, 8, 0);
diff --git a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnZoneCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnZoneCmdlet.cs
index 625080d..2b7bcb8 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnZoneCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/GetPveSdnZoneCmdlet.cs
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, Position = 0, HelpMessage = "The SDN zone name.")]
public string? Zone { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
RequireVersion(session, "SDN", 6, 2, 8, 0);
diff --git a/src/PSProxmoxVE/Cmdlets/Network/InvokePveNetworkApplyCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/InvokePveNetworkApplyCmdlet.cs
index 60ce305..44d2203 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/InvokePveNetworkApplyCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/InvokePveNetworkApplyCmdlet.cs
@@ -24,7 +24,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Node, "Apply PVE Network Configuration"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/InvokePveSdnApplyCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/InvokePveSdnApplyCmdlet.cs
index 981e2cb..07c956d 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/InvokePveSdnApplyCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/InvokePveSdnApplyCmdlet.cs
@@ -14,7 +14,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[OutputType(typeof(void))]
public sealed class InvokePveSdnApplyCmdlet : PveCmdletBase
{
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess("SDN configuration", "Apply pending changes"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/NewPveNetworkCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/NewPveNetworkCmdlet.cs
index 2696158..2a05cbe 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/NewPveNetworkCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/NewPveNetworkCmdlet.cs
@@ -69,7 +69,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "Comments or notes for this interface.")]
public string? Comments { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"{Iface} on {Node}", "Create PVE Network Iface"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnControllerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnControllerCmdlet.cs
index 76f4cf9..12aab7a 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnControllerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnControllerCmdlet.cs
@@ -36,7 +36,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "The node this controller is configured on.")]
public string? Node { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"SDN Controller '{Controller}'", "Create PVE SDN Controller"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnDnsCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnDnsCmdlet.cs
index 143f73d..b7c7579 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnDnsCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnDnsCmdlet.cs
@@ -40,7 +40,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "The TTL (time-to-live) for DNS records.")]
public int? Ttl { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"SDN DNS '{Dns}'", "Create PVE SDN DNS"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnIpamCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnIpamCmdlet.cs
index 9d2fd75..c74d9b1 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnIpamCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnIpamCmdlet.cs
@@ -36,7 +36,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "The configuration section identifier.")]
public int? Section { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"SDN IPAM '{Ipam}'", "Create PVE SDN IPAM"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnSubnetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnSubnetCmdlet.cs
index aa4bbd7..be52ccf 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnSubnetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnSubnetCmdlet.cs
@@ -40,7 +40,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "DHCP range for automatic IP assignment.")]
public string? DhcpRange { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Subnet {Subnet} on VNet {Vnet}", "Create PVE SDN Subnet"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnVnetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnVnetCmdlet.cs
index df17a9d..b5f9e31 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnVnetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnVnetCmdlet.cs
@@ -36,7 +36,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "Enable VLAN awareness on this VNet.")]
public SwitchParameter VlanAware { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"{Vnet} in zone {Zone}", "Create PVE SDN VNet"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnZoneCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnZoneCmdlet.cs
index bc1429c..7108bdb 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnZoneCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/NewPveSdnZoneCmdlet.cs
@@ -52,7 +52,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "IPAM plugin to use.")]
public string? Ipam { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Zone, "Create PVE SDN Zone"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/RemovePveNetworkCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/RemovePveNetworkCmdlet.cs
index 0b484d1..8db2b7b 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/RemovePveNetworkCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/RemovePveNetworkCmdlet.cs
@@ -22,7 +22,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = true, Position = 1, HelpMessage = "The network interface name.")]
public string Iface { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"{Iface} on {Node}", "Remove PVE Network Iface"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnControllerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnControllerCmdlet.cs
index 0705468..a30b416 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnControllerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnControllerCmdlet.cs
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "The controller identifier to remove.")]
public string Controller { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"SDN Controller '{Controller}'", "Remove PVE SDN Controller"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnDnsCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnDnsCmdlet.cs
index 33233be..7e12d74 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnDnsCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnDnsCmdlet.cs
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "The DNS plugin identifier to remove.")]
public string Dns { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"SDN DNS '{Dns}'", "Remove PVE SDN DNS"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnIpamCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnIpamCmdlet.cs
index f56a766..df99ea5 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnIpamCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnIpamCmdlet.cs
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "The IPAM plugin identifier to remove.")]
public string Ipam { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"SDN IPAM '{Ipam}'", "Remove PVE SDN IPAM"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnSubnetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnSubnetCmdlet.cs
index 226b28e..1a3ca49 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnSubnetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnSubnetCmdlet.cs
@@ -23,7 +23,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = true, Position = 1, ValueFromPipelineByPropertyName = true, HelpMessage = "The subnet CIDR to remove.")]
public string Subnet { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Subnet {Subnet} on VNet {Vnet}", "Remove PVE SDN Subnet"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnVnetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnVnetCmdlet.cs
index 82092b8..e85194c 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnVnetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnVnetCmdlet.cs
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[ValidatePattern(@"\A[A-Za-z0-9][A-Za-z0-9._-]*\z")]
public string Vnet { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Vnet, "Remove PVE SDN VNet"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnZoneCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnZoneCmdlet.cs
index 785277c..42bd472 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnZoneCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/RemovePveSdnZoneCmdlet.cs
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[ValidatePattern(@"\A[A-Za-z0-9][A-Za-z0-9._-]*\z")]
public string Zone { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Zone, "Remove PVE SDN Zone"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/SetPveNetworkCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/SetPveNetworkCmdlet.cs
index 097c90c..b3c20cb 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/SetPveNetworkCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/SetPveNetworkCmdlet.cs
@@ -75,7 +75,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "Comments or notes for this interface.")]
public string? Comments { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"{Iface} on {Node}", "Set PVE Network Iface"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnControllerCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnControllerCmdlet.cs
index 41b905b..de6ef5b 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnControllerCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnControllerCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "The node this controller is configured on.")]
public string? Node { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Controller, "Set PVE SDN Controller"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnDnsCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnDnsCmdlet.cs
index d7d06e4..ebe5c1f 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnDnsCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnDnsCmdlet.cs
@@ -35,7 +35,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "The TTL for DNS records.")]
public int? Ttl { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Dns, "Set PVE SDN DNS"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnIpamCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnIpamCmdlet.cs
index a5ce42f..75cd420 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnIpamCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnIpamCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "The section ID in the IPAM server.")]
public int? Section { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Ipam, "Set PVE SDN IPAM"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnSubnetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnSubnetCmdlet.cs
index 4e15119..40af57e 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnSubnetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnSubnetCmdlet.cs
@@ -39,7 +39,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "DHCP range for this subnet.")]
public string? DhcpRange { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Subnet, "Set PVE SDN Subnet"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnVnetCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnVnetCmdlet.cs
index 1c5ca21..44c390d 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnVnetCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnVnetCmdlet.cs
@@ -35,7 +35,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "Enable VLAN-aware bridging.")]
public SwitchParameter VlanAware { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Vnet, "Set PVE SDN VNet"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnZoneCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnZoneCmdlet.cs
index 74a1469..79f7429 100644
--- a/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnZoneCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Network/SetPveSdnZoneCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.Network
[Parameter(Mandatory = false, HelpMessage = "DNS zone name for registration.")]
public string? DnsZone { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Zone, "Set PVE SDN Zone"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeCmdlet.cs
index 5953116..89345ef 100644
--- a/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeCmdlet.cs
@@ -22,7 +22,7 @@ namespace PSProxmoxVE.Cmdlets.Nodes
[ValidateNotNullOrEmpty]
public string? Name { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeConfigCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeConfigCmdlet.cs
index 856d05b..89be9ef 100644
--- a/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeConfigCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeConfigCmdlet.cs
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Nodes
[ValidateNotNullOrEmpty]
public string Node { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new NodeService();
diff --git a/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeDnsCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeDnsCmdlet.cs
index f5857d8..a3d2ba3 100644
--- a/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeDnsCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeDnsCmdlet.cs
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Nodes
[ValidateNotNullOrEmpty]
public string Node { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new NodeService();
diff --git a/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeStatusCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeStatusCmdlet.cs
index 7fc73d9..fc44a22 100644
--- a/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeStatusCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Nodes/GetPveNodeStatusCmdlet.cs
@@ -24,7 +24,7 @@ namespace PSProxmoxVE.Cmdlets.Nodes
[ValidateNotNullOrEmpty]
public string Node { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Nodes/SetPveNodeConfigCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Nodes/SetPveNodeConfigCmdlet.cs
index 14961d4..09f04b8 100644
--- a/src/PSProxmoxVE/Cmdlets/Nodes/SetPveNodeConfigCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Nodes/SetPveNodeConfigCmdlet.cs
@@ -28,7 +28,7 @@ namespace PSProxmoxVE.Cmdlets.Nodes
[Parameter(Mandatory = false, HelpMessage = "Wake-on-LAN configuration.")]
public string? Wakeonlan { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Node, "Set PVE Node Config"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Nodes/SetPveNodeDnsCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Nodes/SetPveNodeDnsCmdlet.cs
index 05edd06..9b5e660 100644
--- a/src/PSProxmoxVE/Cmdlets/Nodes/SetPveNodeDnsCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Nodes/SetPveNodeDnsCmdlet.cs
@@ -37,7 +37,7 @@ namespace PSProxmoxVE.Cmdlets.Nodes
[Parameter(Mandatory = false, HelpMessage = "Tertiary DNS server address.")]
public string? Dns3 { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Node, "Set PVE Node DNS"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Nodes/StartPveNodeVmsCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Nodes/StartPveNodeVmsCmdlet.cs
index 35df044..80d584b 100644
--- a/src/PSProxmoxVE/Cmdlets/Nodes/StartPveNodeVmsCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Nodes/StartPveNodeVmsCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Nodes
[Parameter(Mandatory = false, HelpMessage = "Comma-separated list of VM IDs to start.")]
public string? VmIds { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Node, "Start all VMs"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Nodes/StopPveNodeVmsCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Nodes/StopPveNodeVmsCmdlet.cs
index 6e32fc8..7b531a8 100644
--- a/src/PSProxmoxVE/Cmdlets/Nodes/StopPveNodeVmsCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Nodes/StopPveNodeVmsCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.Nodes
[Parameter(Mandatory = false, HelpMessage = "Force stop VMs without waiting for graceful shutdown.")]
public SwitchParameter ForceStop { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Node, "Stop all VMs"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Pools/GetPvePoolCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Pools/GetPvePoolCmdlet.cs
index ddaf285..fdb36ec 100644
--- a/src/PSProxmoxVE/Cmdlets/Pools/GetPvePoolCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Pools/GetPvePoolCmdlet.cs
@@ -21,7 +21,7 @@ namespace PSProxmoxVE.Cmdlets.Pools
[Parameter(Mandatory = false, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "The pool ID to retrieve.")]
public string? PoolId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new PoolService();
diff --git a/src/PSProxmoxVE/Cmdlets/Pools/NewPvePoolCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Pools/NewPvePoolCmdlet.cs
index a85f88a..f18812f 100644
--- a/src/PSProxmoxVE/Cmdlets/Pools/NewPvePoolCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Pools/NewPvePoolCmdlet.cs
@@ -26,7 +26,7 @@ namespace PSProxmoxVE.Cmdlets.Pools
[Parameter(Mandatory = false, HelpMessage = "An optional comment or description for the pool.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"pool '{PoolId}'", "New-PvePool"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Pools/RemovePvePoolCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Pools/RemovePvePoolCmdlet.cs
index 5f7fa99..559a772 100644
--- a/src/PSProxmoxVE/Cmdlets/Pools/RemovePvePoolCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Pools/RemovePvePoolCmdlet.cs
@@ -22,7 +22,7 @@ namespace PSProxmoxVE.Cmdlets.Pools
[Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "The pool ID to remove.")]
public string PoolId { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"pool '{PoolId}'", "Remove-PvePool"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Pools/SetPvePoolCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Pools/SetPvePoolCmdlet.cs
index cbc5dfd..865d818 100644
--- a/src/PSProxmoxVE/Cmdlets/Pools/SetPvePoolCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Pools/SetPvePoolCmdlet.cs
@@ -39,7 +39,7 @@ namespace PSProxmoxVE.Cmdlets.Pools
[Parameter(Mandatory = false, HelpMessage = "Comma-separated list of members to remove.")]
public string? Delete { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"pool '{PoolId}'", "Set-PvePool"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/PveCmdletBase.cs b/src/PSProxmoxVE/Cmdlets/PveCmdletBase.cs
index 7e2fd63..ec14290 100644
--- a/src/PSProxmoxVE/Cmdlets/PveCmdletBase.cs
+++ b/src/PSProxmoxVE/Cmdlets/PveCmdletBase.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Management.Automation;
using PSProxmoxVE.Core.Authentication;
using PSProxmoxVE.Core.Client;
+using PSProxmoxVE.Core.Errors;
using PSProxmoxVE.Core.Exceptions;
using PSProxmoxVE.Core.Models.Vms;
using PSProxmoxVE.Core.Services;
@@ -23,6 +24,60 @@ namespace PSProxmoxVE.Cmdlets
[Parameter(Mandatory = false)]
public PveSession? Session { get; set; }
+ ///
+ /// Runs and reports any module exception that escapes it
+ /// as a mapped terminating error, so a 403, a 404 and an unreachable server are
+ /// distinguishable by $_.CategoryInfo and $_.FullyQualifiedErrorId.
+ ///
+ protected sealed override void ProcessRecord()
+ {
+ try
+ {
+ ProcessPveRecord();
+ }
+ catch (Exception ex) when (PveErrorMapper.IsRecognized(ex))
+ {
+ ThrowTerminatingError(ToPveErrorRecord(ex, null));
+ }
+ }
+
+ /// The cmdlet's per-record work. Overrides 's body.
+ protected abstract void ProcessPveRecord();
+
+ ///
+ /// Builds the for , classifying it
+ /// with .
+ ///
+ /// The failure to report.
+ ///
+ /// The object the failure is about. When null, the target is derived from the exception
+ /// (the API resource, or the task UPID).
+ ///
+ /// The error record to write or throw.
+ protected ErrorRecord ToPveErrorRecord(Exception exception, object? target)
+ {
+ var descriptor = PveErrorMapper.Describe(exception);
+ return new ErrorRecord(
+ exception,
+ descriptor.ErrorId,
+ ToErrorCategory(descriptor.Kind),
+ target ?? descriptor.Target);
+ }
+
+ private static ErrorCategory ToErrorCategory(PveErrorKind kind) => kind switch
+ {
+ PveErrorKind.PermissionDenied => ErrorCategory.PermissionDenied,
+ PveErrorKind.AuthenticationError => ErrorCategory.AuthenticationError,
+ PveErrorKind.ObjectNotFound => ErrorCategory.ObjectNotFound,
+ PveErrorKind.InvalidArgument => ErrorCategory.InvalidArgument,
+ PveErrorKind.OperationTimeout => ErrorCategory.OperationTimeout,
+ PveErrorKind.ConnectionError => ErrorCategory.ConnectionError,
+ PveErrorKind.ResourceUnavailable => ErrorCategory.ResourceUnavailable,
+ PveErrorKind.InvalidOperation => ErrorCategory.InvalidOperation,
+ PveErrorKind.OperationStopped => ErrorCategory.OperationStopped,
+ _ => ErrorCategory.NotSpecified,
+ };
+
///
/// Returns the session to use for this cmdlet.
/// Resolution order: -Session parameter → ModuleState.ActiveSession.
@@ -74,10 +129,8 @@ namespace PSProxmoxVE.Cmdlets
// Hard fail: endpoint does not exist
if (!version.IsAtLeast(introducedMajor, introducedMinor))
{
- ThrowTerminatingError(new ErrorRecord(
+ ThrowTerminatingError(ToPveErrorRecord(
new PveVersionException(introducedMajor, introducedMinor, version),
- "PveVersionTooOld",
- ErrorCategory.InvalidOperation,
null));
return;
}
diff --git a/src/PSProxmoxVE/Cmdlets/Snapshots/GetPveSnapshotCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Snapshots/GetPveSnapshotCmdlet.cs
index 6619870..aef1ff5 100644
--- a/src/PSProxmoxVE/Cmdlets/Snapshots/GetPveSnapshotCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Snapshots/GetPveSnapshotCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.Snapshots
[Parameter(Mandatory = false, HelpMessage = "Filter by snapshot name.")]
public string? Name { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Snapshots/NewPveSnapshotCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Snapshots/NewPveSnapshotCmdlet.cs
index 6dc0345..9e34488 100644
--- a/src/PSProxmoxVE/Cmdlets/Snapshots/NewPveSnapshotCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Snapshots/NewPveSnapshotCmdlet.cs
@@ -40,7 +40,7 @@ namespace PSProxmoxVE.Cmdlets.Snapshots
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on {Node}", $"Create snapshot '{Name}'"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Snapshots/RemovePveSnapshotCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Snapshots/RemovePveSnapshotCmdlet.cs
index 1ed5146..a7d05fc 100644
--- a/src/PSProxmoxVE/Cmdlets/Snapshots/RemovePveSnapshotCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Snapshots/RemovePveSnapshotCmdlet.cs
@@ -34,7 +34,7 @@ namespace PSProxmoxVE.Cmdlets.Snapshots
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Snapshots/RestorePveSnapshotCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Snapshots/RestorePveSnapshotCmdlet.cs
index 480c168..6967f8a 100644
--- a/src/PSProxmoxVE/Cmdlets/Snapshots/RestorePveSnapshotCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Snapshots/RestorePveSnapshotCmdlet.cs
@@ -37,7 +37,7 @@ namespace PSProxmoxVE.Cmdlets.Snapshots
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageCmdlet.cs
index df2260e..2ee9e07 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageCmdlet.cs
@@ -37,7 +37,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
[Parameter(Mandatory = false, HelpMessage = "Filter by content type (e.g. iso, backup).")]
public string? ContentType { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageContentCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageContentCmdlet.cs
index a0ee963..c4d10ef 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageContentCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageContentCmdlet.cs
@@ -29,7 +29,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
[Parameter(Mandatory = false, HelpMessage = "Filter by content type (e.g. iso, vztmpl, backup).")]
public string? ContentType { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageStatusCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageStatusCmdlet.cs
index e05ea60..bb644ac 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageStatusCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/GetPveStorageStatusCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
[ValidateNotNullOrEmpty]
public string Storage { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new StorageService();
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/InvokePveStorageDownloadCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/InvokePveStorageDownloadCmdlet.cs
index 0cc524a..43c0653 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/InvokePveStorageDownloadCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/InvokePveStorageDownloadCmdlet.cs
@@ -51,7 +51,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
[ValidateRange(0, int.MaxValue)]
public int? TimeoutSeconds { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"{Node}/{Storage}/{Filename}", $"Download from {Url}"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageCmdlet.cs
index 1ef8335..6ba2edc 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageCmdlet.cs
@@ -89,7 +89,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
data[key] = value!;
}
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Storage, "Create PVE Storage"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageDiskCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageDiskCmdlet.cs
index 99468da..ae3d1c3 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageDiskCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/NewPveStorageDiskCmdlet.cs
@@ -41,7 +41,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
[ValidateSet("raw", "qcow2", "vmdk", IgnoreCase = true)]
public string? Format { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"{Filename} ({Size})", "New PVE Storage Disk"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/RemovePveStorageCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/RemovePveStorageCmdlet.cs
index 6e347cf..23a1630 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/RemovePveStorageCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/RemovePveStorageCmdlet.cs
@@ -21,7 +21,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
[ValidatePattern(@"\A[A-Za-z0-9][A-Za-z0-9._-]*\z")]
public string Storage { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Storage, "Remove PVE Storage"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/RemovePveStorageContentCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/RemovePveStorageContentCmdlet.cs
index 79525d8..a9bef59 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/RemovePveStorageContentCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/RemovePveStorageContentCmdlet.cs
@@ -31,7 +31,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
[ValidateNotNullOrEmpty]
public string Volume { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Volume, "Remove PVE Storage Content"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/SendPveFileCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/SendPveFileCmdlet.cs
index b4173bd..9d4349c 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/SendPveFileCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/SendPveFileCmdlet.cs
@@ -67,7 +67,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
[ValidateRange(0, int.MaxValue)]
public int? TimeoutSeconds { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var fileName = System.IO.Path.GetFileName(Path);
if (!ShouldProcess($"{Node}/{Storage}/{fileName}", $"Upload file (content={ContentType})"))
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/SetPveStorageCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/SetPveStorageCmdlet.cs
index 19c3c67..14c7474 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/SetPveStorageCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/SetPveStorageCmdlet.cs
@@ -38,7 +38,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
[Parameter(Mandatory = false, HelpMessage = "Additional configuration parameters as a hashtable.")]
public System.Collections.Hashtable? AdditionalConfig { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"storage '{Storage}'", "Set"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Storage/SetPveStorageContentCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Storage/SetPveStorageContentCmdlet.cs
index 5d8c71a..b8be510 100644
--- a/src/PSProxmoxVE/Cmdlets/Storage/SetPveStorageContentCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Storage/SetPveStorageContentCmdlet.cs
@@ -34,7 +34,7 @@ namespace PSProxmoxVE.Cmdlets.Storage
[Parameter(Mandatory = false, HelpMessage = "Notes or description for the volume.")]
public string? Notes { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Volume, "Set PVE Storage Content"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Tasks/GetPveTaskCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Tasks/GetPveTaskCmdlet.cs
index a2968d8..763fa8d 100644
--- a/src/PSProxmoxVE/Cmdlets/Tasks/GetPveTaskCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Tasks/GetPveTaskCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Tasks
[Parameter(Mandatory = true, Position = 1, ValueFromPipelineByPropertyName = true, HelpMessage = "The task UPID.")]
public string Upid { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Tasks/GetPveTaskListCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Tasks/GetPveTaskListCmdlet.cs
index 5c7562a..ff8f9ce 100644
--- a/src/PSProxmoxVE/Cmdlets/Tasks/GetPveTaskListCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Tasks/GetPveTaskListCmdlet.cs
@@ -49,7 +49,7 @@ namespace PSProxmoxVE.Cmdlets.Tasks
[ValidateRange(1, 10000)]
public int Limit { get; set; } = 50;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new TaskService();
diff --git a/src/PSProxmoxVE/Cmdlets/Tasks/StopPveTaskCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Tasks/StopPveTaskCmdlet.cs
index ab61379..8d8719b 100644
--- a/src/PSProxmoxVE/Cmdlets/Tasks/StopPveTaskCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Tasks/StopPveTaskCmdlet.cs
@@ -28,7 +28,7 @@ namespace PSProxmoxVE.Cmdlets.Tasks
[Parameter(Mandatory = true, Position = 1, ValueFromPipelineByPropertyName = true, HelpMessage = "The task UPID.")]
public string Upid { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"task '{Upid}' on node '{Node}'", "Stop-PveTask"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Tasks/WaitPveTaskCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Tasks/WaitPveTaskCmdlet.cs
index 37c4570..b371175 100644
--- a/src/PSProxmoxVE/Cmdlets/Tasks/WaitPveTaskCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Tasks/WaitPveTaskCmdlet.cs
@@ -52,7 +52,7 @@ namespace PSProxmoxVE.Cmdlets.Tasks
[Parameter(Mandatory = false, HelpMessage = "How often to poll task status.")]
public TimeSpan? PollInterval { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
using var client = new PveHttpClient(session);
diff --git a/src/PSProxmoxVE/Cmdlets/Templates/GetPveTemplateCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Templates/GetPveTemplateCmdlet.cs
index ec406b2..5121b88 100644
--- a/src/PSProxmoxVE/Cmdlets/Templates/GetPveTemplateCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Templates/GetPveTemplateCmdlet.cs
@@ -23,7 +23,7 @@ namespace PSProxmoxVE.Cmdlets.Templates
[Parameter(Mandatory = false, HelpMessage = "Filter by template name (supports wildcards).")]
public string? Name { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new TemplateService();
diff --git a/src/PSProxmoxVE/Cmdlets/Templates/NewPveTemplateCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Templates/NewPveTemplateCmdlet.cs
index 9bc6a45..eddae57 100644
--- a/src/PSProxmoxVE/Cmdlets/Templates/NewPveTemplateCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Templates/NewPveTemplateCmdlet.cs
@@ -29,7 +29,7 @@ namespace PSProxmoxVE.Cmdlets.Templates
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Templates/NewPveVmFromTemplateCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Templates/NewPveVmFromTemplateCmdlet.cs
index f808f76..09d4043 100644
--- a/src/PSProxmoxVE/Cmdlets/Templates/NewPveVmFromTemplateCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Templates/NewPveVmFromTemplateCmdlet.cs
@@ -55,7 +55,7 @@ namespace PSProxmoxVE.Cmdlets.Templates
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Template {VmId} -> new VM {NewVmId}", "Clone PVE VM from Template"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Templates/RemovePveTemplateCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Templates/RemovePveTemplateCmdlet.cs
index f63a07d..f9a4d2b 100644
--- a/src/PSProxmoxVE/Cmdlets/Templates/RemovePveTemplateCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Templates/RemovePveTemplateCmdlet.cs
@@ -34,7 +34,7 @@ namespace PSProxmoxVE.Cmdlets.Templates
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Template {VmId} on {Node}", "Remove PVE Template (all disks will be deleted)"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/GetPveApiTokenCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/GetPveApiTokenCmdlet.cs
index 966b3a9..bb6a3a0 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/GetPveApiTokenCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/GetPveApiTokenCmdlet.cs
@@ -28,7 +28,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, Position = 1, HelpMessage = "The API token identifier.")]
public string? TokenId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Users/GetPveDomainCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/GetPveDomainCmdlet.cs
index a7a05d4..fb3b727 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/GetPveDomainCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/GetPveDomainCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "Optional realm name to filter results.")]
public string? Realm { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new UserService();
diff --git a/src/PSProxmoxVE/Cmdlets/Users/GetPveGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/GetPveGroupCmdlet.cs
index e0e5849..0ee6fe7 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/GetPveGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/GetPveGroupCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "Optional group ID to filter results.")]
public string? GroupId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var service = new UserService();
diff --git a/src/PSProxmoxVE/Cmdlets/Users/GetPvePermissionCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/GetPvePermissionCmdlet.cs
index 6630dbe..198ff97 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/GetPvePermissionCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/GetPvePermissionCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, HelpMessage = "The user ID in user@realm format.")]
public string? UserId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Users/GetPveRoleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/GetPveRoleCmdlet.cs
index 1a0fb65..4f4d6ec 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/GetPveRoleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/GetPveRoleCmdlet.cs
@@ -19,7 +19,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, Position = 0, HelpMessage = "The role identifier.")]
public string? RoleId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Users/GetPveUserCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/GetPveUserCmdlet.cs
index 0fe34ba..51f0a58 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/GetPveUserCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/GetPveUserCmdlet.cs
@@ -27,7 +27,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Alias("EnabledOnly")]
public SwitchParameter Enabled { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Users/NewPveApiTokenCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/NewPveApiTokenCmdlet.cs
index f574388..da73e39 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/NewPveApiTokenCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/NewPveApiTokenCmdlet.cs
@@ -46,7 +46,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, HelpMessage = "Enable token privilege separation.")]
public SwitchParameter PrivilegeSeparation { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var fullTokenId = $"{UserId}!{TokenId}";
if (!ShouldProcess(fullTokenId, "Create PVE API Token"))
diff --git a/src/PSProxmoxVE/Cmdlets/Users/NewPveDomainCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/NewPveDomainCmdlet.cs
index 8231c31..dad91e1 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/NewPveDomainCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/NewPveDomainCmdlet.cs
@@ -33,7 +33,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, HelpMessage = "Set as the default authentication domain.")]
public SwitchParameter Default { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Realm, "Create PVE Domain"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/NewPveGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/NewPveGroupCmdlet.cs
index c7fcb6e..db4cdee 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/NewPveGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/NewPveGroupCmdlet.cs
@@ -23,7 +23,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, HelpMessage = "Comment or description for the group.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(GroupId, "Create PVE Group"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/NewPveRoleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/NewPveRoleCmdlet.cs
index 81bad71..b305143 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/NewPveRoleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/NewPveRoleCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, Position = 1, HelpMessage = "Comma-separated list of privileges.")]
public string? Privileges { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(RoleId, "Create PVE Role"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/NewPveUserCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/NewPveUserCmdlet.cs
index 3b59dc0..f51b1a4 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/NewPveUserCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/NewPveUserCmdlet.cs
@@ -49,7 +49,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, HelpMessage = "Account expiry as a Unix timestamp.")]
public long? Expire { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(UserId, "Create PVE User"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/RemovePveApiTokenCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/RemovePveApiTokenCmdlet.cs
index ebccc4c..cf3f287 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/RemovePveApiTokenCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/RemovePveApiTokenCmdlet.cs
@@ -29,7 +29,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = true, Position = 1, ValueFromPipelineByPropertyName = true, HelpMessage = "The API token identifier.")]
public string TokenId { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Users/RemovePveDomainCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/RemovePveDomainCmdlet.cs
index b5c606c..6e6825f 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/RemovePveDomainCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/RemovePveDomainCmdlet.cs
@@ -21,7 +21,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[ValidateNotNullOrEmpty]
public string Realm { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Realm, "Remove PVE Domain"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/RemovePveGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/RemovePveGroupCmdlet.cs
index 817d227..e7a7d43 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/RemovePveGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/RemovePveGroupCmdlet.cs
@@ -20,7 +20,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[ValidateNotNullOrEmpty]
public string GroupId { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(GroupId, "Remove PVE Group"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/RemovePveRoleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/RemovePveRoleCmdlet.cs
index e7080b1..9fe9531 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/RemovePveRoleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/RemovePveRoleCmdlet.cs
@@ -18,7 +18,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "The role identifier.")]
public string RoleId { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(RoleId, "Remove PVE Role"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/RemovePveUserCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/RemovePveUserCmdlet.cs
index f3a4a8a..e39f8ed 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/RemovePveUserCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/RemovePveUserCmdlet.cs
@@ -17,7 +17,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, HelpMessage = "The user ID in user@realm format.")]
public string UserId { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(UserId, "Remove PVE User"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/SetPveApiTokenCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/SetPveApiTokenCmdlet.cs
index fedc502..05842ae 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/SetPveApiTokenCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/SetPveApiTokenCmdlet.cs
@@ -35,7 +35,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, HelpMessage = "Whether the token uses privilege separation.")]
public SwitchParameter PrivilegeSeparation { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"API token '{UserId}!{TokenId}'", "Set"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/SetPveDomainCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/SetPveDomainCmdlet.cs
index 2876eb5..121f437 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/SetPveDomainCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/SetPveDomainCmdlet.cs
@@ -28,7 +28,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, HelpMessage = "Set as the default authentication domain.")]
public SwitchParameter Default { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(Realm, "Set PVE Domain"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/SetPveGroupCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/SetPveGroupCmdlet.cs
index 7cd0517..30a88f7 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/SetPveGroupCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/SetPveGroupCmdlet.cs
@@ -23,7 +23,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, HelpMessage = "Updated comment or description for the group.")]
public string? Comment { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(GroupId, "Set PVE Group"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/SetPvePasswordCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/SetPvePasswordCmdlet.cs
index 738e813..eb26cb4 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/SetPvePasswordCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/SetPvePasswordCmdlet.cs
@@ -24,7 +24,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = true, Position = 1, HelpMessage = "The new password for the user.")]
public System.Security.SecureString Password { get; set; } = new System.Security.SecureString();
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(UserId, "Set PVE Password"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/SetPvePermissionCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/SetPvePermissionCmdlet.cs
index df21ffe..f195270 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/SetPvePermissionCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/SetPvePermissionCmdlet.cs
@@ -40,7 +40,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, HelpMessage = "Remove the ACL entry instead of adding it.")]
public SwitchParameter Delete { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var action = Delete.IsPresent ? "Remove" : "Set";
if (!ShouldProcess($"{Type} '{UgId}' at '{Path}'", $"{action} PVE Permission ({Role})"))
diff --git a/src/PSProxmoxVE/Cmdlets/Users/SetPveRoleCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/SetPveRoleCmdlet.cs
index 20dd445..c60bbad 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/SetPveRoleCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/SetPveRoleCmdlet.cs
@@ -21,7 +21,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = true, Position = 1, HelpMessage = "Comma-separated list of privileges (e.g. 'VM.Audit,VM.Console').")]
public string Privileges { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"role '{RoleId}'", "Set"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Users/SetPveUserCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Users/SetPveUserCmdlet.cs
index 7ae19ee..b7b154b 100644
--- a/src/PSProxmoxVE/Cmdlets/Users/SetPveUserCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Users/SetPveUserCmdlet.cs
@@ -52,7 +52,7 @@ namespace PSProxmoxVE.Cmdlets.Users
[Parameter(Mandatory = false, HelpMessage = "Enable or disable the user account.")]
public bool? Enable { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess(UserId, "Set PVE User"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/CopyPveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/CopyPveVmCmdlet.cs
index 4180937..25475d9 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/CopyPveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/CopyPveVmCmdlet.cs
@@ -70,7 +70,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var target = TargetNode ?? SourceNode;
if (!ShouldProcess($"VM {VmId} on node '{SourceNode}' to new VM on node '{target}'", "Copy-PveVm"))
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmCmdlet.cs
index 7e1a325..6efa60f 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmCmdlet.cs
@@ -68,7 +68,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Include detailed status (QmpStatus) via per-VM API call.")]
public SwitchParameter Detailed { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmConfigCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmConfigCmdlet.cs
index 3adfe85..32ac87e 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmConfigCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmConfigCmdlet.cs
@@ -30,7 +30,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(100, 999999999)]
public int VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
var vmService = new VmService();
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestFsInfoCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestFsInfoCmdlet.cs
index 00c21ad..477b067 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestFsInfoCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestFsInfoCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(100, 999999999)]
public int VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestNetworkCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestNetworkCmdlet.cs
index 229b1fd..7701d30 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestNetworkCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestNetworkCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(100, 999999999)]
public int VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestOsInfoCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestOsInfoCmdlet.cs
index 7c557e6..7e61b2d 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestOsInfoCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/GetPveVmGuestOsInfoCmdlet.cs
@@ -25,7 +25,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(100, 999999999)]
public int VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/ImportPveOvaCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/ImportPveOvaCmdlet.cs
index 10898fa..6c9ca18 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/ImportPveOvaCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/ImportPveOvaCmdlet.cs
@@ -90,7 +90,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(0, int.MaxValue)]
public int? TimeoutSeconds { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
// Validate the OVA file exists
if (!File.Exists(Path))
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/ImportPveVmDiskCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/ImportPveVmDiskCmdlet.cs
index 82b5854..6ff574f 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/ImportPveVmDiskCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/ImportPveVmDiskCmdlet.cs
@@ -70,7 +70,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Wait for the import task to complete.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} disk {Disk} on node '{Node}'", $"Import disk from '{Source}' to '{TargetStorage}'"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/InvokePveVmGuestExecCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/InvokePveVmGuestExecCmdlet.cs
index 1c1d523..a0510f0 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/InvokePveVmGuestExecCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/InvokePveVmGuestExecCmdlet.cs
@@ -40,7 +40,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 300;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", $"Execute guest command: {Command}"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/InvokePveVmGuestFsTrimCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/InvokePveVmGuestFsTrimCmdlet.cs
index cadfc1b..c5cc4cb 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/InvokePveVmGuestFsTrimCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/InvokePveVmGuestFsTrimCmdlet.cs
@@ -24,7 +24,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(100, 999999999)]
public int VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", "Invoke-PveVmGuestFsTrim"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/MovePveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/MovePveVmCmdlet.cs
index 383efe5..773324c 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/MovePveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/MovePveVmCmdlet.cs
@@ -52,7 +52,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} from node '{Node}' to node '{TargetNode}'", "Move-PveVm"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/MovePveVmDiskCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/MovePveVmDiskCmdlet.cs
index 70c63e4..f72347f 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/MovePveVmDiskCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/MovePveVmDiskCmdlet.cs
@@ -60,7 +60,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Disk '{Disk}' on VM {VmId} (node '{Node}') to storage '{Storage}'", "Move-PveVmDisk"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/NewPveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/NewPveVmCmdlet.cs
index e898dbb..525c359 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/NewPveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/NewPveVmCmdlet.cs
@@ -185,7 +185,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
// Validate -DiskSize and disk-option combinations before ShouldProcess so
// typos and invalid combos are rejected even with -WhatIf, and so the error
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/ReadPveVmGuestFileCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/ReadPveVmGuestFileCmdlet.cs
index 775c128..19f7b90 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/ReadPveVmGuestFileCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/ReadPveVmGuestFileCmdlet.cs
@@ -30,7 +30,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = true, HelpMessage = "The file path inside the guest to read.")]
public string File { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/RemovePveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/RemovePveVmCmdlet.cs
index 63a9bc7..a05e5dc 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/RemovePveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/RemovePveVmCmdlet.cs
@@ -54,7 +54,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", "Remove-PveVm"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/RemovePveVmDiskCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/RemovePveVmDiskCmdlet.cs
index 2a7cc00..29097f9 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/RemovePveVmDiskCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/RemovePveVmDiskCmdlet.cs
@@ -41,7 +41,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Force removal of disk images from storage.")]
public SwitchParameter Force { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Disks '{IdList}' on VM {VmId} (node '{Node}')", "Remove-PveVmDisk"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/ResetPveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/ResetPveVmCmdlet.cs
index e736006..b0f01bc 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/ResetPveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/ResetPveVmCmdlet.cs
@@ -43,7 +43,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 60;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", "Reset-PveVm"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/ResizePveVmDiskCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/ResizePveVmDiskCmdlet.cs
index 99e1b54..afa489c 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/ResizePveVmDiskCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/ResizePveVmDiskCmdlet.cs
@@ -56,7 +56,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"Disk '{Disk}' on VM {VmId} (node '{Node}') to size '{Size}'", "Resize-PveVmDisk"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/RestartPveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/RestartPveVmCmdlet.cs
index 2f19fcd..7a5ea1a 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/RestartPveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/RestartPveVmCmdlet.cs
@@ -47,7 +47,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Wait for the task to complete before returning.")]
public SwitchParameter Wait { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", "Restart-PveVm"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/ResumePveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/ResumePveVmCmdlet.cs
index 60a63c9..84220cd 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/ResumePveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/ResumePveVmCmdlet.cs
@@ -41,7 +41,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 60;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", "Resume-PveVm"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/SetPveVmConfigCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/SetPveVmConfigCmdlet.cs
index 050aa5a..77f462e 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/SetPveVmConfigCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/SetPveVmConfigCmdlet.cs
@@ -105,7 +105,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Comma-separated config keys to delete.")]
public string? Delete { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", "Set-PveVmConfig"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/SetPveVmGuestPasswordCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/SetPveVmGuestPasswordCmdlet.cs
index 656eada..7ca8494 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/SetPveVmGuestPasswordCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/SetPveVmGuestPasswordCmdlet.cs
@@ -44,7 +44,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = false, HelpMessage = "Indicates the password is already crypted/hashed.")]
public SwitchParameter Crypted { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"User '{Username}' on VM {VmId} (node '{Node}')", "Set-PveVmGuestPassword"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/StartPveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/StartPveVmCmdlet.cs
index 9a7b8e3..0c4af20 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/StartPveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/StartPveVmCmdlet.cs
@@ -41,7 +41,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 60;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", "Start-PveVm"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/StopPveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/StopPveVmCmdlet.cs
index bf43145..ac06e0f 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/StopPveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/StopPveVmCmdlet.cs
@@ -43,7 +43,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 60;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", "Stop-PveVm"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/SuspendPveVmCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/SuspendPveVmCmdlet.cs
index 522567c..bb9c643 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/SuspendPveVmCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/SuspendPveVmCmdlet.cs
@@ -42,7 +42,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(1, 3600)]
public int Timeout { get; set; } = 60;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"VM {VmId} on node '{Node}'", "Suspend-PveVm"))
return;
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/TestPveVmGuestAgentCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/TestPveVmGuestAgentCmdlet.cs
index 2cd69b9..52ab8aa 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/TestPveVmGuestAgentCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/TestPveVmGuestAgentCmdlet.cs
@@ -23,7 +23,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[ValidateRange(100, 999999999)]
public int VmId { get; set; }
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
var session = GetSession();
diff --git a/src/PSProxmoxVE/Cmdlets/Vms/WritePveVmGuestFileCmdlet.cs b/src/PSProxmoxVE/Cmdlets/Vms/WritePveVmGuestFileCmdlet.cs
index 8c1748d..687518f 100644
--- a/src/PSProxmoxVE/Cmdlets/Vms/WritePveVmGuestFileCmdlet.cs
+++ b/src/PSProxmoxVE/Cmdlets/Vms/WritePveVmGuestFileCmdlet.cs
@@ -35,7 +35,7 @@ namespace PSProxmoxVE.Cmdlets.Vms
[Parameter(Mandatory = true, HelpMessage = "The content to write to the file.")]
public string Content { get; set; } = string.Empty;
- protected override void ProcessRecord()
+ protected override void ProcessPveRecord()
{
if (!ShouldProcess($"File '{File}' on VM {VmId} (node '{Node}')", "Write-PveVmGuestFile"))
return;
diff --git a/tests/PSProxmoxVE.Core.Tests/Errors/PveErrorMapperTests.cs b/tests/PSProxmoxVE.Core.Tests/Errors/PveErrorMapperTests.cs
new file mode 100644
index 0000000..c52ba91
--- /dev/null
+++ b/tests/PSProxmoxVE.Core.Tests/Errors/PveErrorMapperTests.cs
@@ -0,0 +1,142 @@
+using System;
+using System.Net;
+using PSProxmoxVE.Core.Authentication;
+using PSProxmoxVE.Core.Errors;
+using PSProxmoxVE.Core.Exceptions;
+using Xunit;
+
+namespace PSProxmoxVE.Core.Tests.Errors
+{
+ public class PveErrorMapperTests
+ {
+ private static PveApiException Api(HttpStatusCode status, string resource = "nodes/pve1/qemu/100")
+ => new PveApiException(status, "denied", resource, "GET");
+
+ [Theory]
+ [InlineData(HttpStatusCode.BadRequest, PveErrorKind.InvalidArgument)]
+ [InlineData(HttpStatusCode.Unauthorized, PveErrorKind.AuthenticationError)]
+ [InlineData(HttpStatusCode.Forbidden, PveErrorKind.PermissionDenied)]
+ [InlineData(HttpStatusCode.NotFound, PveErrorKind.ObjectNotFound)]
+ [InlineData(HttpStatusCode.RequestTimeout, PveErrorKind.OperationTimeout)]
+ [InlineData(HttpStatusCode.GatewayTimeout, PveErrorKind.OperationTimeout)]
+ [InlineData(HttpStatusCode.ServiceUnavailable, PveErrorKind.ConnectionError)]
+ [InlineData(HttpStatusCode.InternalServerError, PveErrorKind.ResourceUnavailable)]
+ [InlineData(HttpStatusCode.BadGateway, PveErrorKind.ResourceUnavailable)]
+ [InlineData(HttpStatusCode.Conflict, PveErrorKind.InvalidOperation)]
+ [InlineData(HttpStatusCode.MethodNotAllowed, PveErrorKind.InvalidOperation)]
+ [InlineData((HttpStatusCode)599, PveErrorKind.ResourceUnavailable)]
+ [InlineData((HttpStatusCode)418, PveErrorKind.InvalidOperation)]
+ [InlineData((HttpStatusCode)600, PveErrorKind.InvalidOperation)]
+ public void Describe_MapsApiStatusToKind(HttpStatusCode status, PveErrorKind expected)
+ {
+ Assert.Equal(expected, PveErrorMapper.Describe(Api(status)).Kind);
+ }
+
+ [Fact]
+ public void Describe_ApiErrorIdCarriesStatusAndResource()
+ {
+ var descriptor = PveErrorMapper.Describe(Api(HttpStatusCode.NotFound));
+
+ Assert.Equal("PveApi.404.nodes/pve1/qemu/100", descriptor.ErrorId);
+ Assert.Equal("nodes/pve1/qemu/100", descriptor.Target);
+ }
+
+ [Theory]
+ [InlineData("")]
+ [InlineData(" ")]
+ public void Describe_ApiErrorIdOmitsBlankResource(string resource)
+ {
+ var descriptor = PveErrorMapper.Describe(Api(HttpStatusCode.Forbidden, resource));
+
+ Assert.Equal("PveApi.403", descriptor.ErrorId);
+ Assert.Null(descriptor.Target);
+ }
+
+ [Fact]
+ public void Describe_MapsNotConnectedToConnectionError()
+ {
+ var descriptor = PveErrorMapper.Describe(new PveNotConnectedException());
+
+ Assert.Equal(PveErrorKind.ConnectionError, descriptor.Kind);
+ Assert.Equal("PveNotConnected", descriptor.ErrorId);
+ Assert.Null(descriptor.Target);
+ }
+
+ [Fact]
+ public void Describe_MapsSessionExpiredToAuthenticationError()
+ {
+ var descriptor = PveErrorMapper.Describe(new PveSessionExpiredException());
+
+ Assert.Equal(PveErrorKind.AuthenticationError, descriptor.Kind);
+ Assert.Equal("PveSessionExpired", descriptor.ErrorId);
+ Assert.Null(descriptor.Target);
+ }
+
+ [Fact]
+ public void Describe_MapsTaskFailedToOperationStoppedWithUpidTarget()
+ {
+ var descriptor = PveErrorMapper.Describe(new PveTaskFailedException("UPID:pve1:1", "boom"));
+
+ Assert.Equal(PveErrorKind.OperationStopped, descriptor.Kind);
+ Assert.Equal("PveTaskFailed", descriptor.ErrorId);
+ Assert.Equal("UPID:pve1:1", descriptor.Target);
+ }
+
+ [Fact]
+ public void Describe_MapsTaskTimeoutToOperationTimeoutWithUpidTarget()
+ {
+ var descriptor = PveErrorMapper.Describe(
+ new PveTaskTimeoutException("UPID:pve1:2", TimeSpan.FromSeconds(5)));
+
+ Assert.Equal(PveErrorKind.OperationTimeout, descriptor.Kind);
+ Assert.Equal("PveTaskTimeout", descriptor.ErrorId);
+ Assert.Equal("UPID:pve1:2", descriptor.Target);
+ }
+
+ [Fact]
+ public void Describe_MapsVersionExceptionToInvalidOperation()
+ {
+ var descriptor = PveErrorMapper.Describe(
+ new PveVersionException(9, 0, new PveVersion(8, 4)));
+
+ Assert.Equal(PveErrorKind.InvalidOperation, descriptor.Kind);
+ Assert.Equal("PveVersionTooOld", descriptor.ErrorId);
+ Assert.Null(descriptor.Target);
+ }
+
+ [Fact]
+ public void Describe_LeavesUnrecognisedExceptionUnclassified()
+ {
+ var descriptor = PveErrorMapper.Describe(new InvalidOperationException("x"));
+
+ Assert.Equal(PveErrorKind.NotSpecified, descriptor.Kind);
+ Assert.Equal("InvalidOperationException", descriptor.ErrorId);
+ Assert.Null(descriptor.Target);
+ }
+
+ [Fact]
+ public void IsRecognized_AcceptsEveryModuleException()
+ {
+ Assert.True(PveErrorMapper.IsRecognized(Api(HttpStatusCode.NotFound)));
+ Assert.True(PveErrorMapper.IsRecognized(new PveNotConnectedException()));
+ Assert.True(PveErrorMapper.IsRecognized(new PveSessionExpiredException()));
+ Assert.True(PveErrorMapper.IsRecognized(new PveTaskFailedException("u", "boom")));
+ Assert.True(PveErrorMapper.IsRecognized(new PveTaskTimeoutException("u", TimeSpan.Zero)));
+ Assert.True(PveErrorMapper.IsRecognized(new PveVersionException(9, 0, new PveVersion(8, 4))));
+ }
+
+ [Fact]
+ public void IsRecognized_RejectsExceptionsTheModuleDoesNotClassify()
+ {
+ Assert.False(PveErrorMapper.IsRecognized(new ArgumentException("x")));
+ Assert.False(PveErrorMapper.IsRecognized(new TimeoutException("x")));
+ Assert.False(PveErrorMapper.IsRecognized(new InvalidOperationException("x")));
+ }
+
+ [Fact]
+ public void Describe_RejectsNull()
+ {
+ Assert.Throws(() => PveErrorMapper.Describe(null!));
+ }
+ }
+}
diff --git a/tests/PSProxmoxVE.Tests/Errors/ErrorRecordMapping.Tests.ps1 b/tests/PSProxmoxVE.Tests/Errors/ErrorRecordMapping.Tests.ps1
new file mode 100644
index 0000000..5f14ee2
--- /dev/null
+++ b/tests/PSProxmoxVE.Tests/Errors/ErrorRecordMapping.Tests.ps1
@@ -0,0 +1,42 @@
+#Requires -Module Pester
+<#
+.SYNOPSIS
+ Pester 5 tests for the cmdlet-level PVE error record mapping.
+ Fully offline — the failure under test is raised before any request is sent.
+#>
+
+BeforeAll {
+ . $PSScriptRoot/../_TestHelper.ps1
+}
+
+Describe 'PVE error record mapping' {
+ Context 'Without an active session' {
+ It 'Reports the missing session as ConnectionError' {
+ $record = $null
+ try { Get-PveNode -ErrorAction Stop } catch { $record = $_ }
+
+ $record | Should -Not -BeNullOrEmpty
+ $record.CategoryInfo.Category | Should -Be 'ConnectionError'
+ }
+
+ It 'Reports the missing session with the PveNotConnected error id' {
+ $record = $null
+ try { Get-PveVm -ErrorAction Stop } catch { $record = $_ }
+
+ $record | Should -Not -BeNullOrEmpty
+ $record.FullyQualifiedErrorId | Should -BeLike 'PveNotConnected,*'
+ }
+ }
+
+ Context 'Error kind vocabulary' {
+ It 'Every PveErrorKind name is also an ErrorCategory name' {
+ $kinds = [enum]::GetNames([PSProxmoxVE.Core.Errors.PveErrorKind])
+ $categories = [enum]::GetNames([System.Management.Automation.ErrorCategory])
+
+ $kinds | Should -Not -BeNullOrEmpty
+ foreach ($kind in $kinds) {
+ $categories | Should -Contain $kind
+ }
+ }
+ }
+}