Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions src/Docker.DotNet.BasicAuth/Docker.DotNet.BasicAuth.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,10 @@
<ItemGroup>
<ProjectReference Include="..\Docker.DotNet\Docker.DotNet.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="Nerdbank.GitVersioning" Version="3.3.37">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
6 changes: 6 additions & 0 deletions src/Docker.DotNet.X509/Docker.DotNet.X509.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,10 @@
<ItemGroup>
<ProjectReference Include="..\Docker.DotNet\Docker.DotNet.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="Nerdbank.GitVersioning" Version="3.3.37">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
6 changes: 6 additions & 0 deletions src/Docker.DotNet/Docker.DotNet.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,10 @@
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="System.Buffers" Version="4.5.1" />
</ItemGroup>
<ItemGroup>
<PackageReference Update="Nerdbank.GitVersioning" Version="3.3.37">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
50 changes: 33 additions & 17 deletions src/Docker.DotNet/Endpoints/StreamUtil.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace Docker.DotNet.Models
{
Expand All @@ -30,32 +31,47 @@ internal static async Task MonitorStreamAsync(Task<Stream> streamTask, DockerCli

internal static async Task MonitorStreamForMessagesAsync<T>(Task<Stream> streamTask, DockerClient client, CancellationToken cancel, IProgress<T> progress)
{
using (var stream = await streamTask)
var serializer = new Newtonsoft.Json.JsonSerializer();
try
{
// ReadLineAsync must be cancelled by closing the whole stream.
using (var stream = await streamTask)
using (cancel.Register(() => stream.Dispose()))
using (var reader = new StreamReader(stream, new UTF8Encoding(false)))
using (var jsonReader = new JsonTextReader(reader) { SupportMultipleContent = true })
{
using (var reader = new StreamReader(stream, new UTF8Encoding(false)))
while (jsonReader.Read())
{
string line;
try
{
while ((line = await reader.ReadLineAsync()) != null)
{
var prog = client.JsonSerializer.DeserializeObject<T>(line);
if (prog == null) continue;
var ev = serializer.Deserialize<T>(jsonReader);
if (progress is null) continue;

progress.Report(prog);
}
}
catch (ObjectDisposedException)
progress.Report(ev);

if (cancel.IsCancellationRequested)
{
// The subsequent call to reader.ReadLineAsync() after cancellation
// will fail because we disposed the stream. Just ignore here.
break;
}
}
}
}
catch (AggregateException ex)
{
foreach (var innerException in ex.InnerExceptions)
{
if (innerException is ObjectDisposedException || innerException is System.Net.Sockets.SocketException || innerException is System.IO.IOException || innerException is System.ArgumentException)
{
// Ignore reads on disposed streams.
}
else
{
// Could throw
throw innerException;
}
}
}
catch (ObjectDisposedException)
{
// Ignore reads on disposed streams
}
}

internal static async Task MonitorResponseForMessagesAsync<T>(Task<HttpResponseMessage> responseTask, DockerClient client, CancellationToken cancel, IProgress<T> progress)
Expand Down Expand Up @@ -93,4 +109,4 @@ internal static async Task MonitorResponseForMessagesAsync<T>(Task<HttpResponseM
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace Docker.DotNet.Models
[DataContract]
public class ContainerExecInspectResponse // (types.ContainerExecInspect)
{
[DataMember(Name = "ExecID", EmitDefaultValue = false)]
[DataMember(Name = "ID", EmitDefaultValue = false)]
public string ExecID { get; set; }

[DataMember(Name = "ContainerID", EmitDefaultValue = false)]
Expand Down
10 changes: 8 additions & 2 deletions src/Docker.DotNet/Models/ContainerSpec.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,13 @@ public class ContainerSpec // (swarm.ContainerSpec)
[DataMember(Name = "Sysctls", EmitDefaultValue = false)]
public IDictionary<string, string> Sysctls { get; set; }

[DataMember(Name = "Capabilities", EmitDefaultValue = false)]
public IList<string> Capabilities { get; set; }
[DataMember(Name = "CapabilityAdd", EmitDefaultValue = false)]
public IList<string> CapabilityAdd { get; set; }

[DataMember(Name = "CapabilityDrop", EmitDefaultValue = false)]
public IList<string> CapabilityDrop { get; set; }

[DataMember(Name = "Ulimits", EmitDefaultValue = false)]
public IList<Ulimit> Ulimits { get; set; }
}
}
9 changes: 9 additions & 0 deletions src/Docker.DotNet/Models/GlobalJob.Generated.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using System.Runtime.Serialization;

namespace Docker.DotNet.Models
{
[DataContract]
public class GlobalJob // (swarm.GlobalJob)
{
}
}
3 changes: 0 additions & 3 deletions src/Docker.DotNet/Models/HostConfig.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,6 @@ public HostConfig(Resources Resources)
[DataMember(Name = "CapDrop", EmitDefaultValue = false)]
public IList<string> CapDrop { get; set; }

[DataMember(Name = "Capabilities", EmitDefaultValue = false)]
public IList<string> Capabilities { get; set; }

[DataMember(Name = "CgroupnsMode", EmitDefaultValue = false)]
public string CgroupnsMode { get; set; }

Expand Down
3 changes: 0 additions & 3 deletions src/Docker.DotNet/Models/ImagesListParameters.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ namespace Docker.DotNet.Models
[DataContract]
public class ImagesListParameters // (main.ImagesListParameters)
{
[QueryStringParameter("filter", false)]
public string MatchName { get; set; }

[QueryStringParameter("all", false, typeof(BoolQueryStringConverter))]
public bool? All { get; set; }

Expand Down
7 changes: 7 additions & 0 deletions src/Docker.DotNet/Models/ImagesSearchParameters.Generated.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace Docker.DotNet.Models
Expand All @@ -8,6 +9,12 @@ public class ImagesSearchParameters // (main.ImagesSearchParameters)
[QueryStringParameter("term", false)]
public string Term { get; set; }

[QueryStringParameter("limit", false)]
public long? Limit { get; set; }

[QueryStringParameter("filters", false, typeof(MapQueryStringConverter))]
public IDictionary<string, IDictionary<string, bool>> Filters { get; set; }

[DataMember(Name = "RegistryAuth", EmitDefaultValue = false)]
public AuthConfig RegistryAuth { get; set; }
}
Expand Down
15 changes: 15 additions & 0 deletions src/Docker.DotNet/Models/JobStatus.Generated.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;
using System.Runtime.Serialization;

namespace Docker.DotNet.Models
{
[DataContract]
public class JobStatus // (swarm.JobStatus)
{
[DataMember(Name = "JobIteration", EmitDefaultValue = false)]
public Version JobIteration { get; set; }

[DataMember(Name = "LastExecution", EmitDefaultValue = false)]
public DateTime LastExecution { get; set; }
}
}
14 changes: 14 additions & 0 deletions src/Docker.DotNet/Models/NetworkAddressPool.Generated.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System.Runtime.Serialization;

namespace Docker.DotNet.Models
{
[DataContract]
public class NetworkAddressPool // (types.NetworkAddressPool)
{
[DataMember(Name = "Base", EmitDefaultValue = false)]
public string Base { get; set; }

[DataMember(Name = "Size", EmitDefaultValue = false)]
public long Size { get; set; }
}
}
14 changes: 14 additions & 0 deletions src/Docker.DotNet/Models/ReplicatedJob.Generated.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System.Runtime.Serialization;

namespace Docker.DotNet.Models
{
[DataContract]
public class ReplicatedJob // (swarm.ReplicatedJob)
{
[DataMember(Name = "MaxConcurrent", EmitDefaultValue = false)]
public ulong? MaxConcurrent { get; set; }

[DataMember(Name = "TotalCompletions", EmitDefaultValue = false)]
public ulong? TotalCompletions { get; set; }
}
}
2 changes: 1 addition & 1 deletion src/Docker.DotNet/Models/ResourceRequirements.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace Docker.DotNet.Models
public class ResourceRequirements // (swarm.ResourceRequirements)
{
[DataMember(Name = "Limits", EmitDefaultValue = false)]
public SwarmResources Limits { get; set; }
public SwarmLimit Limits { get; set; }

[DataMember(Name = "Reservations", EmitDefaultValue = false)]
public SwarmResources Reservations { get; set; }
Expand Down
2 changes: 1 addition & 1 deletion src/Docker.DotNet/Models/SecretSpec.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public SecretSpec(Annotations Annotations)
public IDictionary<string, string> Labels { get; set; }

[DataMember(Name = "Data", EmitDefaultValue = false)]
public IList<byte> Data { get; set; }
public string Data { get; set; }

[DataMember(Name = "Driver", EmitDefaultValue = false)]
public SwarmDriver Driver { get; set; }
Expand Down
16 changes: 7 additions & 9 deletions src/Docker.DotNet/Models/ServiceFilter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,28 @@ public class ServicesListParameters
[QueryStringParameter("filters", false, typeof(MapQueryStringConverter))]
public ServiceFilter Filters { get; set; }
}

public class ServiceFilter : Dictionary<string, string>
public class ServiceFilter : Dictionary<string, string[]>
{
public string Id
public string[] Id
{
get => this["id"];
set => this["id"] = value;
}
public string Label
public string[] Label
{
get => this["label"];
set => this["label"] = value;
}
public ServiceCreationMode Mode
public ServiceCreationMode[] Mode
{
get => !Enum.TryParse(this["mode"], out ServiceCreationMode mode) ? ServiceCreationMode.Replicated : mode;
set => this["mode"] = value.ToString();
get => this["mode"]?.ToList().Select(m => (ServiceCreationMode)Enum.Parse(typeof(ServiceCreationMode), m)).ToArray();
set => this["mode"] = value?.Select(m => m.ToString()).ToArray();
}
public string Name
public string[] Name
{
get => this["name"];
set => this["name"] = value;
}

}

public enum ServiceCreationMode
Expand Down
15 changes: 15 additions & 0 deletions src/Docker.DotNet/Models/ServiceListParameters.Generated.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace Docker.DotNet.Models
{
[DataContract]
public class ServiceListParameters // (main.ServiceListParameters)
{
[QueryStringParameter("filters", false, typeof(MapQueryStringConverter))]
public IDictionary<string, IDictionary<string, bool>> Filters { get; set; }

[QueryStringParameter("status", false, typeof(BoolQueryStringConverter))]
public bool? Status { get; set; }
}
}
29 changes: 29 additions & 0 deletions src/Docker.DotNet/Models/ServiceLogsParameters.Generated.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
using System.Runtime.Serialization;

namespace Docker.DotNet.Models
{
[DataContract]
public class ServiceLogsParameters // (main.ServiceLogsParameters)
{
[QueryStringParameter("stdout", false, typeof(BoolQueryStringConverter))]
public bool? ShowStdout { get; set; }

[QueryStringParameter("stderr", false, typeof(BoolQueryStringConverter))]
public bool? ShowStderr { get; set; }

[QueryStringParameter("since", false)]
public string Since { get; set; }

[QueryStringParameter("timestamps", false, typeof(BoolQueryStringConverter))]
public bool? Timestamps { get; set; }

[QueryStringParameter("follow", false, typeof(BoolQueryStringConverter))]
public bool? Follow { get; set; }

[QueryStringParameter("tail", false)]
public string Tail { get; set; }

[QueryStringParameter("details", false, typeof(BoolQueryStringConverter))]
public bool? Details { get; set; }
}
}
6 changes: 6 additions & 0 deletions src/Docker.DotNet/Models/ServiceMode.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,11 @@ public class ServiceMode // (swarm.ServiceMode)

[DataMember(Name = "Global", EmitDefaultValue = false)]
public GlobalService Global { get; set; }

[DataMember(Name = "ReplicatedJob", EmitDefaultValue = false)]
public ReplicatedJob ReplicatedJob { get; set; }

[DataMember(Name = "GlobalJob", EmitDefaultValue = false)]
public GlobalJob GlobalJob { get; set; }
}
}
3 changes: 3 additions & 0 deletions src/Docker.DotNet/Models/ServiceStatus.Generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,8 @@ public class ServiceStatus // (swarm.ServiceStatus)

[DataMember(Name = "DesiredTasks", EmitDefaultValue = false)]
public ulong DesiredTasks { get; set; }

[DataMember(Name = "CompletedTasks", EmitDefaultValue = false)]
public ulong CompletedTasks { get; set; }
}
}
14 changes: 14 additions & 0 deletions src/Docker.DotNet/Models/ShimConfig.Generated.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System.Runtime.Serialization;

namespace Docker.DotNet.Models
{
[DataContract]
public class ShimConfig // (types.ShimConfig)
{
[DataMember(Name = "Binary", EmitDefaultValue = false)]
public string Binary { get; set; }

[DataMember(Name = "Opts", EmitDefaultValue = false)]
public object Opts { get; set; }
}
}
Loading