From 58b14104813417ce8566d688abf6edabd5011903 Mon Sep 17 00:00:00 2001 From: Alexandros Nikolopoulos Date: Sun, 8 Feb 2026 19:15:04 +0000 Subject: [PATCH 1/4] By default return only native network ips --- tilework.core/Interfaces/Core/IContainerManager.cs | 3 ++- tilework.core/Services/Core/DockerServiceManager.cs | 9 +++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tilework.core/Interfaces/Core/IContainerManager.cs b/tilework.core/Interfaces/Core/IContainerManager.cs index d9219fb..2e3adf2 100644 --- a/tilework.core/Interfaces/Core/IContainerManager.cs +++ b/tilework.core/Interfaces/Core/IContainerManager.cs @@ -13,7 +13,8 @@ public interface IContainerManager public Task CreateNetwork(string name); public Task DeleteNetwork(string id); - public Task GetContainerAddress(string id); + public Task GetContainerAddress(string id); + public Task GetContainerAddress(string id, string networkName); public Task> GetContainerPorts(string id); public Task> ListContainers(string? module); diff --git a/tilework.core/Services/Core/DockerServiceManager.cs b/tilework.core/Services/Core/DockerServiceManager.cs index 4e5ca2a..e35d072 100644 --- a/tilework.core/Services/Core/DockerServiceManager.cs +++ b/tilework.core/Services/Core/DockerServiceManager.cs @@ -134,16 +134,17 @@ public async Task DeleteNetwork(string id) public async Task GetContainerAddress(string id) { + return await GetContainerAddress(id, defaultNetworkName); + } + public async Task 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); } From c5c2afed32687eab28aaad442c5883ee63062e55 Mon Sep 17 00:00:00 2001 From: Alexandros Nikolopoulos Date: Sat, 25 Jul 2026 16:59:07 +0000 Subject: [PATCH 2/4] Refactor container listing --- tilework.core/Interfaces/Core/IContainerManager.cs | 2 +- .../MonitoringProviders/Collectd/CollectdDataCollector.cs | 2 +- tilework.core/Providers/Shared/BaseContainerProvider.cs | 2 +- .../Services/CertificateManagement/AcmeVerificationService.cs | 4 ++-- tilework.core/Services/Core/DockerServiceManager.cs | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tilework.core/Interfaces/Core/IContainerManager.cs b/tilework.core/Interfaces/Core/IContainerManager.cs index 2e3adf2..5c4b136 100644 --- a/tilework.core/Interfaces/Core/IContainerManager.cs +++ b/tilework.core/Interfaces/Core/IContainerManager.cs @@ -17,7 +17,7 @@ public interface IContainerManager public Task GetContainerAddress(string id, string networkName); public Task> GetContainerPorts(string id); - public Task> ListContainers(string? module); + public Task> ListNativeContainers(string? module); public Task CreateContainer(string name, string image, string module, List? ports); public Task DeleteContainer(string id); public Task CopyFileToContainer(string id, string localPath, string containerPath); diff --git a/tilework.core/Providers/MonitoringProviders/Collectd/CollectdDataCollector.cs b/tilework.core/Providers/MonitoringProviders/Collectd/CollectdDataCollector.cs index 14b8acd..4e7d5e9 100644 --- a/tilework.core/Providers/MonitoringProviders/Collectd/CollectdDataCollector.cs +++ b/tilework.core/Providers/MonitoringProviders/Collectd/CollectdDataCollector.cs @@ -35,7 +35,7 @@ public CollectdConfigurator(IOptions settings, private async Task GetContainer() { - var containers = await _containerManager.ListContainers("monitoring.tile"); + var containers = await _containerManager.ListNativeContainers("monitoring.tile"); return containers.FirstOrDefault(c => c.Name == ContainerName); } diff --git a/tilework.core/Providers/Shared/BaseContainerProvider.cs b/tilework.core/Providers/Shared/BaseContainerProvider.cs index 00fffd9..da92873 100644 --- a/tilework.core/Providers/Shared/BaseContainerProvider.cs +++ b/tilework.core/Providers/Shared/BaseContainerProvider.cs @@ -51,7 +51,7 @@ private bool IsFullName(string name) protected async Task> GetContainers() { - return await _containerManager.ListContainers(_fullModule); + return await _containerManager.ListNativeContainers(_fullModule); } protected async Task GetContainer(string name) diff --git a/tilework.core/Services/CertificateManagement/AcmeVerificationService.cs b/tilework.core/Services/CertificateManagement/AcmeVerificationService.cs index ec9aceb..852d11d 100644 --- a/tilework.core/Services/CertificateManagement/AcmeVerificationService.cs +++ b/tilework.core/Services/CertificateManagement/AcmeVerificationService.cs @@ -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) @@ -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(); diff --git a/tilework.core/Services/Core/DockerServiceManager.cs b/tilework.core/Services/Core/DockerServiceManager.cs index 0df240c..211ed15 100644 --- a/tilework.core/Services/Core/DockerServiceManager.cs +++ b/tilework.core/Services/Core/DockerServiceManager.cs @@ -202,7 +202,7 @@ public async Task> GetContainerPorts(string id) } - public async Task> ListContainers(string? module = null) + public async Task> ListNativeContainers(string? module = null) { var labelFilters = new Dictionary { From 9b7a7106d15dbb3af91f2d0bad61f29040b06d0a Mon Sep 17 00:00:00 2001 From: Alexandros Nikolopoulos Date: Sat, 25 Jul 2026 17:06:32 +0000 Subject: [PATCH 3/4] Implemented non-native container scanning --- .../Interfaces/Core/IContainerManager.cs | 3 ++- .../Services/Core/DockerServiceManager.cs | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/tilework.core/Interfaces/Core/IContainerManager.cs b/tilework.core/Interfaces/Core/IContainerManager.cs index 5c4b136..f6cabee 100644 --- a/tilework.core/Interfaces/Core/IContainerManager.cs +++ b/tilework.core/Interfaces/Core/IContainerManager.cs @@ -18,6 +18,7 @@ public interface IContainerManager public Task> GetContainerPorts(string id); public Task> ListNativeContainers(string? module); + public Task> ListNonNativeContainers(); public Task CreateContainer(string name, string image, string module, List? ports); public Task DeleteContainer(string id); public Task CopyFileToContainer(string id, string localPath, string containerPath); @@ -27,4 +28,4 @@ public interface IContainerManager public Task KillContainer(string id, UnixSignal signal); public Task ExecuteContainerCommand(string id, string command); -} \ No newline at end of file +} diff --git a/tilework.core/Services/Core/DockerServiceManager.cs b/tilework.core/Services/Core/DockerServiceManager.cs index 211ed15..4ecbede 100644 --- a/tilework.core/Services/Core/DockerServiceManager.cs +++ b/tilework.core/Services/Core/DockerServiceManager.cs @@ -230,6 +230,27 @@ public async Task> ListNativeContainers(string? module = null) }).ToList(); } + public async Task> 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 ImageExists(string image) { var images = await _client.Images.ListImagesAsync(new ImagesListParameters { All = true }); From 032065f1894a0d92f36c01f9c0549fc752bb57fa Mon Sep 17 00:00:00 2001 From: Alexandros Nikolopoulos Date: Sat, 25 Jul 2026 17:13:40 +0000 Subject: [PATCH 4/4] fixibug --- tilework.core/Services/Core/DockerServiceManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tilework.core/Services/Core/DockerServiceManager.cs b/tilework.core/Services/Core/DockerServiceManager.cs index 4ecbede..1d52d76 100644 --- a/tilework.core/Services/Core/DockerServiceManager.cs +++ b/tilework.core/Services/Core/DockerServiceManager.cs @@ -329,7 +329,7 @@ await _client.Images.CreateImageAsync( } }); - return (await ListContainers()).First(cnt => cnt.Id == response.ID); + return (await ListNativeContainers()).First(cnt => cnt.Id == response.ID); } public async Task DeleteContainer(string id)