mirror of
https://github.com/GoodOlClint/PSProxmoxVE.git
synced 2026-09-05 19:55:27 +00:00
docs: changelog entries for wave 4 (#242)
This commit is contained in:
committed by
GitHub
parent
c8a7e809bb
commit
a0011b8fa7
@@ -19,6 +19,13 @@ and this project adheres to [Conventional Commits](https://www.conventionalcommi
|
||||
- Removed the eight duplicated task-response parsers in favour of one shared one, so every cmdlet that returns a task without `-Wait` reports `Status = "running"` where several (`New-PveVm`, the VM lifecycle cmdlets, `Copy-PveVm`, `Move-PveVm`, `Resize-PveVmDisk`, `Import-PveVmDisk`, `New-PveBackup`, `Start`/`Stop-PveNodeAll`, `New-PveTemplate`, and the container lifecycle cmdlets) left it blank. Removed the unused `PveAuthenticationException`, the `Put`/`Delete` sync wrappers on `PveHttpClient` and the duplicate `ClusterConfigService.GetClusterStatus`; the firewall cmdlets validate `-Level`/`-Node`/`-VmId`/`-Group` through one shared check instead of 18 copies, with messages and error categories unchanged; the three hand-rolled version warnings go through `PveCmdletBase.WarnIfBelowVersion`; and the offline suite lost 126 tests that asserted a null-session guard only `null!` in a test could reach. (#154)
|
||||
- The offline Pester suite can now fail: `Skip-IfMissing`, which skipped a test whenever the cmdlet it was about was missing, is gone; one manifest test diffs `CmdletsToExport` against the built module in both directions and checks the per-cmdlet conventions by reflection, replacing 894 tests that restated `[Cmdlet]` and `[Parameter]` attributes. The help was regenerated for the 25 cmdlets (the HA and Cluster families) that shipped without any. (#153)
|
||||
- `Newtonsoft.Json` is now 13.0.4 in both shipped assemblies, with every package version managed centrally in `Directory.Packages.props` so the two can no longer drift; the SDK is pinned by `global.json` (10.0, latest feature band) and the net48 test build no longer emits the `System.Memory` MSB3277 conflict. (#156)
|
||||
- Every cmdlet now reports PVE API failures as typed error records: a 403 is `PermissionDenied`, a 404 `ObjectNotFound`, a 400 `InvalidArgument`, a timeout `OperationTimeout`, a 401 or an expired session `AuthenticationError`, an unreachable server `ConnectionError` and a failed task `OperationStopped`, each with an `ErrorId` naming the resource and status and a populated `TargetObject`, so `-ErrorAction`, `$_.CategoryInfo` and typed `catch` blocks work. (#155)
|
||||
- `Connect-PveServer` now stores the session per runspace instead of in a process-wide static, so parallel runspaces (`ForEach-Object -Parallel`, hosted runspaces, JEA) no longer see or overwrite each other's session. (#150)
|
||||
- `Get-PveVm` without `-Node` now lists the whole cluster with one `cluster/resources` call instead of one call per node, `Get-PveVm -Detailed` emits each VM as it is enriched over one connection instead of buffering the whole list, and single-VM lookups fetch the VM directly. (#152)
|
||||
- `Import-PveOva` reads the OVA through a dedicated `OvfReader`, and `OvfMetadata` is now a plain data type with no file or archive access. Lifecycle waits (`-Wait` on `Start-`/`Stop-`/`Restart-`/`Suspend-`/`Resume-`/`Reset-PveVm`, the container equivalents, `Copy-PveVm`, `Resize-PveVmDisk`, cluster joins) now run in a `GuestLifecycleService` in Core with offline tests for the lock-clear and timeout rules; behaviour is unchanged. `Get-PveNodeConfig`, `Get-PveNodeDns`, `Get-PveClusterConfig`, `Get-PveBackupInfo` and the guest-exec status poll now return typed `Pve*` objects instead of dictionaries, with unknown fields preserved in `AdditionalProperties`. (#157)
|
||||
- Removed ten unused public service methods (`CloudInitService.GetCloudInitConfig`, `ClusterConfigService.GetTotem`/`GetQdevice`/`GetApiVersion`, `ContainerService.GetContainer`, `HaService.GetManagerStatus`, `NodeService.GetVersion`, `TaskService.GetTaskLog`, `UserService.GetUser`, `VmService.ShutdownVm`); no cmdlet used them. (#220)
|
||||
- Ticket sessions now renew themselves: `PveHttpClient` refreshes the ticket at half its lifetime and retries once after a 401, so `-Wait` operations and scripts running past the two-hour ticket lifetime no longer fail with a raw 401; API-token sessions are unaffected. (#143)
|
||||
- `Connect-PveServer -ApiToken` now takes a `SecureString`; a plain string still works for this release with a deprecation warning and is removed in the next major. The session object no longer exposes `ApiToken`, `Ticket` or `CsrfToken`, so `Format-List *`, `ConvertTo-Json` and `Export-Clixml` of a session no longer print credentials. (#147)
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -40,6 +47,8 @@ and this project adheres to [Conventional Commits](https://www.conventionalcommi
|
||||
- Guest operations that Proxmox rejects with `can't lock file '/var/lock/qemu-server/lock-<vmid>.conf' - got timeout` are now reissued for up to 45 seconds instead of surfacing as an error. That flock is taken by `qm cleanup` for up to 30 seconds after a guest stops and is not exposed through the API in any form, so it can only be retried past, never waited on. Covers both the synchronous form (`Set-PveVmConfig`, `Resize-PveVmDisk`, and every other call through the HTTP client) and the asynchronous form, where the request succeeds and the PVE task then fails (`Reset-PveVm`, `Copy-PveVm`). Reproduced on a client ~40% slower than CI, which failed three VM tests on a commit CI passed. (#113) See `DECISIONS.md` D020.
|
||||
- Lifecycle cmdlets with `-Wait` (`Start`/`Stop`/`Restart`/`Reset`/`Resume` for VMs and containers) also wait for the guest's config lock (the `lock:` property, e.g. `backup` or `migrate`) to clear before returning, and the post-timeout fallback tests the most recent poll rather than whether a match was ever seen. See `DECISIONS.md` D015 — that guard covers the config lock only; the separate flock race is D020.
|
||||
- `New-PveCluster -Wait` now blocks until the cluster reports quorum, not merely until the creation task finishes. PVE's create task returns before corosync converges (~6s earlier in testing), so the natural `New-PveCluster -Wait` → `Add-PveClusterMember` sequence failed with `cluster not ready - no quorum?`. Adds `-Timeout` (seconds, default 60, range 1-3600) following the `-Wait` timeout convention used by `Stop-PveContainer` and `Reset-PveVm`. See `DECISIONS.md` D014.
|
||||
- `Get-PveClusterConfig` always returned an empty result because the response array was checked as an object; it now returns the directory-index entries. (#157)
|
||||
- `Add-PveClusterMember -Wait` keeps its password re-authentication fallback across the join's auth-key rotation now that the client renews tickets itself. (#143)
|
||||
|
||||
## [0.2.0] - 2026-05-22
|
||||
|
||||
|
||||
Reference in New Issue
Block a user