github.com/ehazlett/containerd@v0.2.5/supervisor/delete.go (about) 1 package supervisor 2 3 import ( 4 "time" 5 6 "github.com/Sirupsen/logrus" 7 "github.com/docker/containerd/runtime" 8 ) 9 10 // DeleteTask holds needed parameters to remove a container 11 type DeleteTask struct { 12 baseTask 13 ID string 14 Status uint32 15 PID string 16 NoEvent bool 17 Process runtime.Process 18 } 19 20 func (s *Supervisor) delete(t *DeleteTask) error { 21 if i, ok := s.containers[t.ID]; ok { 22 start := time.Now() 23 if err := s.deleteContainer(i.container); err != nil { 24 logrus.WithField("error", err).Error("containerd: deleting container") 25 } 26 if t.Process != nil { 27 t.Process.Wait() 28 } 29 if !t.NoEvent { 30 s.notifySubscribers(Event{ 31 Type: StateExit, 32 Timestamp: time.Now(), 33 ID: t.ID, 34 Status: t.Status, 35 PID: t.PID, 36 }) 37 } 38 ContainersCounter.Dec(1) 39 ContainerDeleteTimer.UpdateSince(start) 40 } 41 return nil 42 } 43 44 func (s *Supervisor) deleteContainer(container runtime.Container) error { 45 delete(s.containers, container.ID()) 46 return container.Delete() 47 }