using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using StellaOps.Zastava.Observer.Configuration; namespace StellaOps.Zastava.Observer.ContainerRuntime.Cri; internal interface ICriRuntimeClientFactory { ICriRuntimeClient Create(ContainerRuntimeEndpointOptions endpoint); } internal sealed class CriRuntimeClientFactory : ICriRuntimeClientFactory { private readonly IServiceProvider serviceProvider; public CriRuntimeClientFactory(IServiceProvider serviceProvider) { this.serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); } public ICriRuntimeClient Create(ContainerRuntimeEndpointOptions endpoint) { var logger = serviceProvider.GetRequiredService>(); return new CriRuntimeClient(endpoint, logger); } }