internal override async Task <ExecutionResult> _RunAsync(CancellationToken cancellationToken) { try { var containers = await _dockerClient.Containers.ListContainersAsync(new ContainersListParameters { All = true }, cancellationToken); if (containers .SingleOrDefault(e => e.Image == (_moduleWithIdentity.Module as Devices.Edge.Agent.Docker.DockerModule)?.Config .Image) != null) { Console.WriteLine($"Removing {_moduleWithIdentity.Module.Name}..."); await(await _dockerFactory.RemoveAsync(_moduleWithIdentity.Module)) .ExecuteAsync(cancellationToken); } } catch (Exception) { Console.WriteLine($"{_moduleWithIdentity.Module.Name} not found"); } try { var runtimeConfig = new DockerRuntimeConfig("1.24.0", "{}"); var runtimeInfo = new DockerRuntimeInfo("docker", runtimeConfig); Console.WriteLine($"Creating {_moduleWithIdentity.Module.Name}..."); //_dockerClient.Volumes.CreateAsync(new VolumesCreateParameters() { Name = "vol1", Driver = "local", }) await(await _dockerFactory.CreateAsync(_moduleWithIdentity, runtimeInfo)).ExecuteAsync( cancellationToken); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } try { Console.WriteLine($"Starting {_moduleWithIdentity.Module.Name}..."); await(await _dockerFactory.StartAsync(_moduleWithIdentity.Module)).ExecuteAsync(cancellationToken); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } return(await base._RunAsync(cancellationToken)); }