mirror of
https://github.com/MAKS-IT-COM/podman-client-dotnet.git
synced 2026-08-15 14:48:11 +02:00
7.6 KiB
7.6 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[1.3.0] - 2026-07-27
Added
- PowerShell module
MaksIT.PodmanClientDotNet.PowerShellwrapping the fullIPodmanClientsurface (Connect-Podmanand domain cmdlets). - PowerShell E2E harness under
src/e2e-tests/(requiresPODMAN_TEST_URL) covering system, images, containers, exec, volumes, networks, pods, build, manifests, and generate. Validated against Podman 5.4.0.
Changed
- Default
ApiVersion:v5.4.0(libpod path). Docker-compatv1.41is not used — network endpoints reject it. - Manifests (libpod v4+): create via
POST /libpod/manifests/{name}; add viaPUTmodify body; push viaPOST .../registry/{destination}(replaces deprecated v3/create,/add,/push). - Pod stats:
GetPodsStatsAsyncreturnsList<PodStatsDto>(libpod array), not a dictionary wrapper.
Fixed
- Ping (
/_ping): treat Podman's plain-textOKbody as success instead of JSON-deserializing it (which threwJsonException). - Mount container: treat plain filesystem path body as
ContainerMountDto.Path. - Wait container: accept bare exit-code integer responses from libpod.
- System DTOs (
LibpodVersionDto,InfoDto,SystemDfDto): align with live libpod JSON shapes (e.g. versionPlatformobject, hostdistributionobject, numeric memory fields). - Image DTOs:
RepoTags/RepoDigestsas string arrays; image tree{Tree}; image changes as path/kind entries; delete/remove returns a singleImageDeleteDtoobject (not an array). - Prune APIs: image/container/volume/pod prune return a list of
PruneReportEntryDto; system prune returnsSystemPruneReportDto. - Container list/inspect/stats/changes/mounted DTOs: align with live libpod JSON (including multi-container stats wrapper).
- Container inspect:
Config.StopSignalis a string (e.g.SIGTERM), notInt64. - Pod DTOs: inspect/list
Containersas object summaries.
Removed
- C# xUnit live Integration tests (
Category=Integration); replaced by PowerShell E2E scenarios.
[1.2.1] - 2026-07-10
Fixed
- Inspect exec deserialization:
ProcessConfigis now typed as an object (InspectExecProcessDto) matching the Podman libpod API, instead ofstring(which threwJsonExceptionwhen reading exit codes after exec).
[1.2.0] - 2026-07-02
Added
- Native AOT and trimming compatibility via
System.Text.Jsonsource generation (PodmanJsonContextwith[JsonSerializable]for all library DTOs and request models). <IsAotCompatible>true</IsAotCompatible>on the package project to surface trim/AOT Roslyn analyzers at build time.
Changed
- Internal JSON serialization/deserialization now uses explicit
JsonTypeInfo<T>(JsonSerializer.Serialize/Deserialize) instead of reflection-basedMaksIT.Core.ExtensionsToJson()/ToObject<T>(). - HTTP helpers (
GetJsonAsync,PostJsonAsync,PostJsonWithoutBodyAsync,PostLibpodAsync,DeleteJsonAsync) andPodmanProgressSession<T>updated to thread source-generated type metadata through all call sites. PodmanJsonContextusesPropertyNameCaseInsensitive = trueso Podman lowercase JSON keys map to PascalCase DTO properties.
Removed
- MaksIT.Core package reference (JSON helpers were its only use in this library); consumers no longer pull MaksIT.Core transitively from PodmanClient.DotNet.
Thanks
[1.1.1] - 2026-06-28
Changed
- Updated MaksIT.Core (1.6.8), MaksIT.Results (2.0.3), and Microsoft.Extensions.* (10.0.9) package references.
- Updated test dependencies: Microsoft.NET.Test.Sdk (18.7.0), Microsoft.Extensions.Logging.Console (10.0.9).
[1.1.0] - 2026-06-04
Added
- Full Libpod API coverage (~86 endpoints) via domain interfaces:
IPodmanSystemClient,IPodmanContainersClient,IPodmanImagesClient,IPodmanVolumesClient,IPodmanNetworksClient,IPodmanPodsClient,IPodmanExecClient,IPodmanBuildClient,IPodmanManifestsClient,IPodmanGenerateClient(composed byIPodmanClient). - Typed API responses under
Dtos/(*Dtosuffix); request/spec payloads remain inModels/. - Streaming APIs:
AttachContainerSessionAsync,StartExecSessionAsync(IPodmanAttachSession),PullImageWithProgressAsync,BuildImageWithProgressAsync(IPodmanProgressSession<T>), plus hijack connection and multiplex protocol internals. - Shared HTTP helpers in
PodmanClient.Http.csand NDJSON stream handling inPodmanNdjsonStreams. IPodmanClientConfiguration,AddPodmanClient(IHttpClientFactory/AddHttpClient); host apps supply their own configuration implementation.- Unit tests for streaming, NDJSON, and hijack mock server; integration tests tagged
Category=Integration(skip withoutPODMAN_TEST_URL). CHANGELOG.md,CONTRIBUTING.md, coverage badge assets, andutils/(RepoUtils test/release engines).
Changed
- Target framework upgraded to .NET 10 (
net10.0). - API methods return MaksIT.Results
Result/Result<T>instead of throwing on Podman HTTP errors. - Added MaksIT.Core and MaksIT.Results dependencies; removed local
Extensions(ToJson/ToObject) in favor ofMaksIT.Core.Extensions. PodmanClientsplit into partials (PodmanClient.Http.cs,PodmanClient.Containers.Api.cs, etc.); solution file migrated toPodmanClientDotNet.slnx.- Package metadata, Source Link, symbol packages, and documentation generation aligned with maksit-core standards.
- Registry auth (
X-Registry-Auth) applied per HTTP request instead of mutating sharedHttpClient.DefaultRequestHeaders. - Replaced legacy
src/Release-NuGetPackage.*scripts and.nuspecwith SDK-style pack +utils/release tooling.
Fixed
- Pull, push, and build endpoints consume NDJSON progress streams correctly;
BuildImageAsyncno longer deserializes a multi-line build stream as a single JSON object. - Attach hijack requests include the
ttyquery parameter. - Manual
PodmanClientconstructor preserves caller-configuredHttpClient.Timeout(no longer truncated via integer minutes cast).
Removed
- Concrete
PodmanClientConfigurationtype from the library package. - Monolithic
PodmanClientContainer.cs,PodmanClientExec.cs, andPodmanClientImage.cs(superseded by partials).
Breaking
- Method return types changed from
Task/Task<T?>toResult/Result<T?>. - Response types moved to
Dtos/; update usings fromModels.*response classes. - Removed
PodmanClientConfiguration; bindIPodmanClientConfigurationwith a host-owned options class. - Prefer
IPodmanClientandAddPodmanClientfor DI; manualPodmanClientconstructors remain for tests and simple hosts.
[1.0.4] - 2024-08-18
Added
- Integration tests for container lifecycle, exec, and image pull/tag.
Fixed
- Empty-string JSON parse issue in HTTP response handling.
Changed
- Package readme and repository documentation updates.
[1.0.2] - 2024-08-17
Added
- Initial PodmanClient.DotNet library on .NET 8 (
net8.0). - Container operations: create, start, stop, delete, archive copy.
- Exec operations: create, start, inspect.
- Image operations: pull, tag.
- NuGet packaging (
.nuspec,Release-NuGetPackagescripts) and README.