public async Task DestroySandbox(Guid userId, Guid sandboxId) { User user = await this.CreateUserIfNotExisted(userId); Sandbox sandbox = user.Sandboxes.FirstOrDefault(c => c.SandboxId.Equals(sandboxId)); if (sandbox == null) { throw new KeyNotFoundException(); } try { await docker.DeleteContainer(sandbox.DockerContainerId); } finally { Docker.DotNet.Models.ContainerListResponse response = await this.docker.GetContainer(sandbox.DockerContainerId); if (response == null) { user.Sandboxes.Remove(sandbox); await context.SaveChangesAsync(); } } }
/// <summary> /// Constructs a new <code>Container</code> object from an existing /// <code>Docker.DotNet.Models.ContainerListResponse</code> object. /// </summary> /// <param name="container">A container list response object.</param> /// <returns>A new container object.</returns> public static Container From(Docker.DotNet.Models.ContainerListResponse container) { return(new Container { Names = container.Names, Id = container.ID, Image = container.Image, Created = container.Created, Ports = container.Ports.Select(Port.From).ToList(), State = container.State, Mounts = container.Mounts.Select(MountPoint.From).ToList() }); }