podman-client-dotnet/src/PodmanClient/PodmanClient.Volumes.cs
2026-07-28 22:30:11 +02:00

38 lines
1.9 KiB
C#

using MaksIT.PodmanClientDotNet;
using MaksIT.PodmanClientDotNet.Dtos.Common;
using MaksIT.PodmanClientDotNet.Dtos.Volume;
using MaksIT.PodmanClientDotNet.Models.Volume;
using MaksIT.Results;
public partial class PodmanClient {
public Task<Result<VolumeInspectResponseDto?>> CreateVolumeAsync(
CreateVolumeRequest request,
CancellationToken cancellationToken = default
) =>
PostJsonAsync<CreateVolumeRequest, VolumeInspectResponseDto>(
"/libpod/volumes/create",
"Create volume",
request,
PodmanJsonContext.Default.CreateVolumeRequest,
PodmanJsonContext.Default.VolumeInspectResponseDto,
cancellationToken: cancellationToken
);
public Task<Result<List<VolumeListEntryDto>?>> ListVolumesAsync(CancellationToken cancellationToken = default) =>
GetJsonAsync<List<VolumeListEntryDto>>("/libpod/volumes/json", "List volumes", PodmanJsonContext.Default.ListVolumeListEntryDto, cancellationToken: cancellationToken);
public Task<Result<VolumeInspectResponseDto?>> InspectVolumeAsync(string name, CancellationToken cancellationToken = default) =>
GetJsonAsync<VolumeInspectResponseDto>($"/libpod/volumes/{Uri.EscapeDataString(name)}/json", "Inspect volume", PodmanJsonContext.Default.VolumeInspectResponseDto, cancellationToken: cancellationToken);
public Task<Result> DeleteVolumeAsync(string name, bool force = false, CancellationToken cancellationToken = default) =>
DeleteWithoutBodyAsync(
$"/libpod/volumes/{Uri.EscapeDataString(name)}",
"Delete volume",
[("force", force.ToString().ToLowerInvariant())],
cancellationToken
);
public Task<Result<List<PruneReportEntryDto>?>> PruneVolumesAsync(CancellationToken cancellationToken = default) =>
PostLibpodAsync<List<PruneReportEntryDto>>("/libpod/volumes/prune", "Prune volumes", PodmanJsonContext.Default.ListPruneReportEntryDto, cancellationToken: cancellationToken);
}