Skip to content

Commit

Permalink
fix: Generate NodeRemoveParameters type
Browse files Browse the repository at this point in the history
  • Loading branch information
HofmeisterAn committed Oct 31, 2024
1 parent ecec25a commit 626377d
Show file tree
Hide file tree
Showing 9 changed files with 97 additions and 88 deletions.
2 changes: 1 addition & 1 deletion src/Docker.DotNet/Endpoints/ISwarmOperations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ public interface ISwarmOperations
/// 500 - Server error.
/// 503 - Node is not part of a swarm.
/// </remarks>
Task<IEnumerable<SwarmService>> ListServicesAsync(ServicesListParameters parameters = null, CancellationToken cancellationToken = default(CancellationToken));
Task<IEnumerable<SwarmService>> ListServicesAsync(ServiceListParameters parameters = null, CancellationToken cancellationToken = default(CancellationToken));

/// <summary>
/// Update a service.
Expand Down
4 changes: 2 additions & 2 deletions src/Docker.DotNet/Endpoints/SwarmOperations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,9 @@ await _client.MakeRequestAsync(
cancellationToken).ConfigureAwait(false);
}

async Task<IEnumerable<SwarmService>> ISwarmOperations.ListServicesAsync(ServicesListParameters parameters, CancellationToken cancellationToken)
async Task<IEnumerable<SwarmService>> ISwarmOperations.ListServicesAsync(ServiceListParameters parameters, CancellationToken cancellationToken)
{
var queryParameters = parameters != null ? new QueryString<ServicesListParameters>(parameters) : null;
var queryParameters = parameters != null ? new QueryString<ServiceListParameters>(parameters) : null;
var response = await _client
.MakeRequestAsync(new[] { SwarmResponseHandler }, HttpMethod.Get, "services", queryParameters, cancellationToken)
.ConfigureAwait(false);
Expand Down
11 changes: 11 additions & 0 deletions src/Docker.DotNet/Models/NodeRemoveParameters.Generated.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
using System.Runtime.Serialization;

namespace Docker.DotNet.Models
{
[DataContract]
public class NodeRemoveParameters // (main.NodeRemoveParameters)
{
[QueryStringParameter("force", false, typeof(BoolQueryStringConverter))]
public bool? Force { get; set; }
}
}
11 changes: 0 additions & 11 deletions src/Docker.DotNet/Models/NodeRemoveParameters.cs

This file was deleted.

41 changes: 0 additions & 41 deletions src/Docker.DotNet/Models/ServiceFilter.cs

This file was deleted.

59 changes: 39 additions & 20 deletions test/Docker.DotNet.Tests/ISwarmOperationsTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public async Task GetFilteredServicesByName_Succeeds()
{
var serviceName = $"service1-{Guid.NewGuid().ToString().Substring(1, 10)}";

var serviceId1st = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
var firstServiceId = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
{
Service = new ServiceSpec
{
Expand All @@ -42,7 +42,7 @@ public async Task GetFilteredServicesByName_Succeeds()
}
})).ID;

var serviceId2nd = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
var secondServiceId = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
{
Service = new ServiceSpec
{
Expand All @@ -51,7 +51,7 @@ public async Task GetFilteredServicesByName_Succeeds()
}
})).ID;

var serviceId3rd = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
var thirdServiceId = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
{
Service = new ServiceSpec
{
Expand All @@ -60,19 +60,28 @@ public async Task GetFilteredServicesByName_Succeeds()
}
})).ID;

var services = await _dockerClient.Swarm.ListServicesAsync(new ServicesListParameters { Filters = new ServiceFilter { Name = new[] { serviceName } } }, CancellationToken.None);
var services = await _dockerClient.Swarm.ListServicesAsync(new ServiceListParameters
{
Filters = new Dictionary<string, IDictionary<string, bool>>
{
["name"] = new Dictionary<string, bool>
{
[serviceName] = true
}
}
}, CancellationToken.None);

Assert.Single(services);

await _dockerClient.Swarm.RemoveServiceAsync(serviceId1st);
await _dockerClient.Swarm.RemoveServiceAsync(serviceId2nd);
await _dockerClient.Swarm.RemoveServiceAsync(serviceId3rd);
await _dockerClient.Swarm.RemoveServiceAsync(firstServiceId);
await _dockerClient.Swarm.RemoveServiceAsync(secondServiceId);
await _dockerClient.Swarm.RemoveServiceAsync(thirdServiceId);
}

[Fact]
public async Task GetFilteredServicesById_Succeeds()
{
var serviceId1st = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
var firstServiceId = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
{
Service = new ServiceSpec
{
Expand All @@ -81,7 +90,7 @@ public async Task GetFilteredServicesById_Succeeds()
}
})).ID;

var serviceId2nd = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
var secondServiceId = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
{
Service = new ServiceSpec
{
Expand All @@ -90,7 +99,7 @@ public async Task GetFilteredServicesById_Succeeds()
}
})).ID;

var serviceId3rd = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
var thirdServiceId = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
{
Service = new ServiceSpec
{
Expand All @@ -99,20 +108,30 @@ public async Task GetFilteredServicesById_Succeeds()
}
})).ID;

var services = await _dockerClient.Swarm.ListServicesAsync(new ServicesListParameters { Filters = new ServiceFilter { Id = new[] { serviceId1st } } }, CancellationToken.None);
var services = await _dockerClient.Swarm.ListServicesAsync(new ServiceListParameters
{
Filters = new Dictionary<string, IDictionary<string, bool>>
{
["id"] = new Dictionary<string, bool>
{
[firstServiceId] = true
}
}
}, CancellationToken.None);

Assert.Single(services);

await _dockerClient.Swarm.RemoveServiceAsync(serviceId1st);
await _dockerClient.Swarm.RemoveServiceAsync(serviceId2nd);
await _dockerClient.Swarm.RemoveServiceAsync(serviceId3rd);
await _dockerClient.Swarm.RemoveServiceAsync(firstServiceId);
await _dockerClient.Swarm.RemoveServiceAsync(secondServiceId);
await _dockerClient.Swarm.RemoveServiceAsync(thirdServiceId);
}

[Fact]
public async Task GetServices_Succeeds()
{
var initialServiceCount = (await _dockerClient.Swarm.ListServicesAsync(cancellationToken: CancellationToken.None)).Count();

var serviceId1st = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
var firstServiceId = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
{
Service = new ServiceSpec
{
Expand All @@ -121,7 +140,7 @@ public async Task GetServices_Succeeds()
}
})).ID;

var serviceId2nd = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
var secondServiceId = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
{
Service = new ServiceSpec
{
Expand All @@ -130,7 +149,7 @@ public async Task GetServices_Succeeds()
}
})).ID;

var serviceId3rd = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
var thirdServiceId = (await _dockerClient.Swarm.CreateServiceAsync(new ServiceCreateParameters
{
Service = new ServiceSpec
{
Expand All @@ -143,9 +162,9 @@ public async Task GetServices_Succeeds()

Assert.True(services.Count() > initialServiceCount);

await _dockerClient.Swarm.RemoveServiceAsync(serviceId1st);
await _dockerClient.Swarm.RemoveServiceAsync(serviceId2nd);
await _dockerClient.Swarm.RemoveServiceAsync(serviceId3rd);
await _dockerClient.Swarm.RemoveServiceAsync(firstServiceId);
await _dockerClient.Swarm.RemoveServiceAsync(secondServiceId);
await _dockerClient.Swarm.RemoveServiceAsync(thirdServiceId);
}

[Fact]
Expand Down
51 changes: 38 additions & 13 deletions test/Docker.DotNet.Tests/QueryStringTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using Docker.DotNet.Models;
using Xunit;

Expand All @@ -9,37 +10,61 @@ public class QueryStringTests
[Fact]
public void ServiceListParameters_GenerateIdFilters()
{
var p = new ServicesListParameters { Filters = new ServiceFilter { Id = new[] { "service-id" } } };
var qs = new QueryString<ServicesListParameters>(p);
var p = new ServiceListParameters
{
Filters = new Dictionary<string, IDictionary<string, bool>>
{
["id"] = new Dictionary<string, bool>
{
["service-id"] = true
}
}
};

Assert.Equal("filters={\"id\":[\"service-id\"]}", Uri.UnescapeDataString(qs.GetQueryString()));
var qs = new QueryString<ServiceListParameters>(p);

Assert.Equal("filters={\"id\":{\"service-id\":true}}", Uri.UnescapeDataString(qs.GetQueryString()));
}

[Fact]
public void ServiceListParameters_GenerateCompositeFilters()
{
var p = new ServicesListParameters { Filters = new ServiceFilter { Id = new[] { "service-id" }, Label = new[] { "label" } } };
var qs = new QueryString<ServicesListParameters>(p);
var p = new ServiceListParameters
{
Filters = new Dictionary<string, IDictionary<string, bool>>
{
["id"] = new Dictionary<string, bool>
{
["service-id"] = true
},
["label"] = new Dictionary<string, bool>
{
["label"] = true
}
}
};

var qs = new QueryString<ServiceListParameters>(p);

Assert.Equal("filters={\"id\":[\"service-id\"],\"label\":[\"label\"]}", Uri.UnescapeDataString(qs.GetQueryString()));
Assert.Equal("filters={\"id\":{\"service-id\":true},\"label\":{\"label\":true}}", Uri.UnescapeDataString(qs.GetQueryString()));
}

[Fact]
public void ServicesListParameters_GenerateNullFilters()
public void ServiceListParameters_GenerateNullFilters()
{
var p = new ServicesListParameters { Filters = new ServiceFilter() };
var qs = new QueryString<ServicesListParameters>(p);
var p = new ServiceListParameters { Filters = new Dictionary<string, IDictionary<string, bool>>() };
var qs = new QueryString<ServiceListParameters>(p);

Assert.Equal("filters={}", Uri.UnescapeDataString(qs.GetQueryString()));
}

[Fact]
public void ServicesListParameters_GenerateNullModeFilters()
public void ServiceListParameters_GenerateNullModeFilters()
{
var p = new ServicesListParameters { Filters = new ServiceFilter() { Mode = new ServiceCreationMode[] { } } };
var qs = new QueryString<ServicesListParameters>(p);
var p = new ServiceListParameters { Filters = new Dictionary<string, IDictionary<string, bool>> { ["mode"] = new Dictionary<string, bool>() } };
var qs = new QueryString<ServiceListParameters>(p);

Assert.Equal("filters={\"mode\":[]}", Uri.UnescapeDataString(qs.GetQueryString()));
Assert.Equal("filters={\"mode\":{}}", Uri.UnescapeDataString(qs.GetQueryString()));
}
}
}
5 changes: 5 additions & 0 deletions tools/specgen/modeldefs.go
Original file line number Diff line number Diff line change
Expand Up @@ -367,6 +367,11 @@ type SwarmUpdateParameters struct {
// SwarmUnlockParameters for POST /swarm/unlock
type SwarmUnlockParameters swarm.UnlockRequest

// NodeRemoveParameters for DELETE /nodes/(id)
type NodeRemoveParameters struct {
Force bool `rest:"query"`
}

// SwarmUpdateConfigParameters for POST /configs/(id)/update
type SwarmUpdateConfigParameters struct {
Config swarm.ConfigSpec `rest:"body,,required"`
Expand Down
1 change: 1 addition & 0 deletions tools/specgen/specgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -477,6 +477,7 @@ var dockerTypesToReflect = []reflect.Type{
reflect.TypeOf(swarm.TLSInfo{}),

// DELETE /nodes/(id)
reflect.TypeOf(NodeRemoveParameters{}),

// POST /nodes/(id)/update
reflect.TypeOf(swarm.NodeSpec{}),
Expand Down

0 comments on commit 626377d

Please sign in to comment.