Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions tilework.core/Interfaces/Core/IContainerManager.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -13,10 +13,12 @@ public interface IContainerManager
public Task<ContainerNetwork> CreateNetwork(string name);
public Task DeleteNetwork(string id);

public Task<IPAddress> GetContainerAddress(string id);
public Task<IPAddress?> GetContainerAddress(string id);
public Task<IPAddress?> GetContainerAddress(string id, string networkName);
public Task<List<ContainerPort>> GetContainerPorts(string id);

public Task<List<Container>> ListContainers(string? module);
public Task<List<Container>> ListNativeContainers(string? module);
public Task<List<Container>> ListNonNativeContainers();
public Task<Container> CreateContainer(string name, string image, string module, List<ContainerPort>? ports);
public Task DeleteContainer(string id);
public Task CopyFileToContainer(string id, string localPath, string containerPath);
Expand All@@ -26,4 +28,4 @@ public interface IContainerManager
public Task KillContainer(string id, UnixSignal signal);

public Task<ContainerCommandResult> ExecuteContainerCommand(string id, string command);
}
}
Original file line numberDiff line numberDiff line change
Expand Up@@ -35,7 +35,7 @@ public CollectdConfigurator(IOptions<DataCollectorConfiguration> settings,

private async Task<Container?> GetContainer()
{
var containers = await _containerManager.ListContainers("monitoring.tile");
var containers = await _containerManager.ListNativeContainers("monitoring.tile");

return containers.FirstOrDefault(c => c.Name == ContainerName);
}
Expand Down
2 changes: 1 addition & 1 deletion tilework.core/Providers/Shared/BaseContainerProvider.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -51,7 +51,7 @@ private bool IsFullName(string name)

protected async Task<List<Container>> GetContainers()
{
return await _containerManager.ListContainers(_fullModule);
return await _containerManager.ListNativeContainers(_fullModule);
}

protected async Task<Container?> GetContainer(string name)
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -66,7 +66,7 @@ await _containerManager.CopyFileToContainer(

private async Task DeleteContainer(string name)
{
var containers = await _containerManager.ListContainers("certificatemanagement.tile");
var containers = await _containerManager.ListNativeContainers("certificatemanagement.tile");
var container = containers.FirstOrDefault(cnt => cnt.Name == $"certificatemanagement.acmeverification.{name}");

if (container == null)
Expand DownExpand Up@@ -222,7 +222,7 @@ public async Task StopVerification(string id)

public async Task StopAllVerifications()
{
var containers = (await _containerManager.ListContainers("certificatemanagement.tile"))
var containers = (await _containerManager.ListNativeContainers("certificatemanagement.tile"))
.Where(cnt => cnt.Name.StartsWith("AcmeVerification-"))
.ToList();

Expand Down
34 changes: 28 additions & 6 deletions tilework.core/Services/Core/DockerServiceManager.cs
Original file line numberDiff line numberDiff line change
Expand Up@@ -134,16 +134,17 @@

public async Task<IPAddress?> GetContainerAddress(string id)
{
return await GetContainerAddress(id, defaultNetworkName);
}

public async Task<IPAddress?> GetContainerAddress(string id, string networkName)
{
var info = await _client.Containers.InspectContainerAsync(id);

if (info.NetworkSettings.Networks.Count == 0)
return null;

if (info.NetworkSettings.Networks.Count > 1)
_logger.LogWarning("Container is attached on multiple networks. Getting address on first");

var network = info.NetworkSettings.Networks.First();
var network = info.NetworkSettings.Networks.First(n => n.Key == networkName);

return IPAddress.Parse(network.Value.IPAddress);
}
Expand DownExpand Up@@ -201,7 +202,7 @@
}


public async Task<List<Container>> ListContainers(string? module = null)
public async Task<List<Container>> ListNativeContainers(string? module = null)

Check failure on line 205 in tilework.core/Services/Core/DockerServiceManager.cs

View check run for this annotation

SonarQubeCloud/ SonarCloud Code Analysis

Remove the default parameter value to match the signature of overridden method.

See more on https://sonarcloud.io/project/issues?id=tileworkdev_tilework&issues=AZ-aQ8Yw4HFOx29go6j_&open=AZ-aQ8Yw4HFOx29go6j_&pullRequest=72
{
var labelFilters = new Dictionary<string, bool>
{
Expand DownExpand Up@@ -229,6 +230,27 @@
}).ToList();
}

public async Task<List<Container>> ListNonNativeContainers()
{
var containers = await _client.Containers.ListContainersAsync(
new ContainersListParameters()
{
All = true
});

var non_native = containers.Where(cnt =>
cnt.Labels == null ||
!cnt.Labels.TryGetValue("dev.tilework.managed", out var managed) ||
!string.Equals(managed, "true", StringComparison.Ordinal));

return non_native.Select(cnt => new Container
{
Id = cnt.ID,
Name = cnt.Names[0].TrimStart('/'),
State = ParseState(cnt.State)
}).ToList();
}

private async Task<bool> ImageExists(string image)
{
var images = await _client.Images.ListImagesAsync(new ImagesListParameters { All = true });
Expand DownExpand Up@@ -307,7 +329,7 @@
}
});

return (await ListContainers()).First(cnt => cnt.Id == response.ID);
return (await ListNativeContainers()).First(cnt => cnt.Id == response.ID);
}

public async Task DeleteContainer(string id)
Expand Down