Пример #1
0
        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));
        }