Skip to content

Commit 6e4439b

Browse files
committed
chore: show container image for the remove container plan operation
1 parent 882f2f5 commit 6e4439b

File tree

3 files changed

+34
-30
lines changed

3 files changed

+34
-30
lines changed

pkg/api/container.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"time"
99

1010
"github.com/docker/docker/api/types/container"
11+
"github.com/docker/docker/pkg/stringid"
1112
"github.com/docker/go-units"
1213
)
1314

@@ -144,6 +145,11 @@ type ServiceContainer struct {
144145
ServiceSpec ServiceSpec
145146
}
146147

148+
// ShortID returns the truncated ID of the container (12 characters).
149+
func (c *ServiceContainer) ShortID() string {
150+
return stringid.TruncateID(c.ID)
151+
}
152+
147153
// ServiceID returns the ID of the service this container belongs to.
148154
func (c *ServiceContainer) ServiceID() string {
149155
return c.Config.Labels[LabelServiceID]

pkg/client/deploy/operation.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ type NameResolver interface {
2929
ContainerName(containerID string) string
3030
}
3131

32+
// TODO: pass api.ServiceContainer to operations to simplify operation formatting in the plan.
33+
3234
// RunContainerOperation creates and starts a new container on a specific machine.
3335
type RunContainerOperation struct {
3436
ServiceID string
@@ -56,8 +58,8 @@ func (o *RunContainerOperation) Format(resolver NameResolver) string {
5658
}
5759

5860
func (o *RunContainerOperation) String() string {
59-
return fmt.Sprintf("RunContainerOperation[service_id=%s, image=%s, machine_id=%s]",
60-
o.ServiceID, o.Spec.Container.Image, o.MachineID)
61+
return fmt.Sprintf("RunContainerOperation[machine_id=%s service_id=%s image=%s]",
62+
o.MachineID, o.ServiceID, o.Spec.Container.Image)
6163
}
6264

6365
// StopContainerOperation stops a container on a specific machine.
@@ -76,26 +78,26 @@ func (o *StopContainerOperation) Execute(ctx context.Context, cli Client) error
7678

7779
func (o *StopContainerOperation) Format(resolver NameResolver) string {
7880
machineName := resolver.MachineName(o.MachineID)
79-
return fmt.Sprintf("%s: Stop container [name=%s]", machineName, resolver.ContainerName(o.ContainerID))
81+
return fmt.Sprintf("%s: Stop container [id=%s name=%s]", machineName,
82+
o.ContainerID, resolver.ContainerName(o.ContainerID))
8083
}
8184

8285
func (o *StopContainerOperation) String() string {
83-
return fmt.Sprintf("StopContainerOperation[service_id=%s, container_id=%s, machine_id=%s]",
84-
o.ServiceID, o.ContainerID, o.MachineID)
86+
return fmt.Sprintf("StopContainerOperation[machine_id=%s service_id=%s container_id=%s]",
87+
o.MachineID, o.ServiceID, o.ContainerID)
8588
}
8689

8790
// RemoveContainerOperation stops and removes a container from a specific machine.
8891
type RemoveContainerOperation struct {
89-
ServiceID string
90-
ContainerID string
91-
MachineID string
92+
MachineID string
93+
Container api.ServiceContainer
9294
}
9395

9496
func (o *RemoveContainerOperation) Execute(ctx context.Context, cli Client) error {
95-
if err := cli.StopContainer(ctx, o.ServiceID, o.ContainerID, container.StopOptions{}); err != nil {
97+
if err := cli.StopContainer(ctx, o.Container.ServiceID(), o.Container.ID, container.StopOptions{}); err != nil {
9698
return fmt.Errorf("stop container: %w", err)
9799
}
98-
if err := cli.RemoveContainer(ctx, o.ServiceID, o.ContainerID, container.RemoveOptions{
100+
if err := cli.RemoveContainer(ctx, o.Container.ServiceID(), o.Container.ID, container.RemoveOptions{
99101
// Remove anonymous volumes created by the container.
100102
RemoveVolumes: true,
101103
}); err != nil {
@@ -107,12 +109,13 @@ func (o *RemoveContainerOperation) Execute(ctx context.Context, cli Client) erro
107109

108110
func (o *RemoveContainerOperation) Format(resolver NameResolver) string {
109111
machineName := resolver.MachineName(o.MachineID)
110-
return fmt.Sprintf("%s: Remove container [name=%s]", machineName, resolver.ContainerName(o.ContainerID))
112+
return fmt.Sprintf("%s: Remove container [ID=%s image=%s]",
113+
machineName, o.Container.ShortID(), o.Container.Config.Image)
111114
}
112115

113116
func (o *RemoveContainerOperation) String() string {
114-
return fmt.Sprintf("RemoveContainerOperation[service_id=%s, container_id=%s, machine_id=%s]",
115-
o.ServiceID, o.ContainerID, o.MachineID)
117+
return fmt.Sprintf("RemoveContainerOperation[machine_id=%s service_id=%s container_id=%s]",
118+
o.MachineID, o.Container.ServiceID(), o.Container.ID)
116119
}
117120

118121
// CreateVolumeOperation creates a volume on a specific machine.
@@ -151,8 +154,8 @@ func (o *CreateVolumeOperation) Format(_ NameResolver) string {
151154
}
152155

153156
func (o *CreateVolumeOperation) String() string {
154-
return fmt.Sprintf("CreateVolumeOperation[volume=%s, machine_id=%s]",
155-
o.VolumeSpec.DockerVolumeName(), o.MachineID)
157+
return fmt.Sprintf("CreateVolumeOperation[machine_id=%s volume=%s]",
158+
o.MachineID, o.VolumeSpec.DockerVolumeName())
156159
}
157160

158161
// SequenceOperation is a composite operation that executes a sequence of operations in order.

pkg/client/deploy/strategy.go

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -182,19 +182,17 @@ func (s *RollingStrategy) planReplicated(svc *api.Service, spec api.ServiceSpec)
182182

183183
// Remove the old container.
184184
plan.Operations = append(plan.Operations, &RemoveContainerOperation{
185-
ServiceID: plan.ServiceID,
186-
ContainerID: ctr.ID,
187-
MachineID: m.Id,
185+
MachineID: m.Id,
186+
Container: ctr,
188187
})
189188
}
190189

191190
// Remove any remaining containers that are not needed.
192191
for mid, containers := range containersOnMachine {
193192
for _, c := range containers {
194193
plan.Operations = append(plan.Operations, &RemoveContainerOperation{
195-
ServiceID: plan.ServiceID,
196-
ContainerID: c.ID,
197-
MachineID: mid,
194+
MachineID: mid,
195+
Container: c,
198196
})
199197
}
200198
}
@@ -244,9 +242,8 @@ func (s *RollingStrategy) planGlobal(svc *api.Service, spec api.ServiceSpec) (Pl
244242
for _, containers := range containersOnMachine {
245243
for _, c := range containers {
246244
plan.Operations = append(plan.Operations, &RemoveContainerOperation{
247-
ServiceID: plan.ServiceID,
248-
ContainerID: c.Container.ID,
249-
MachineID: c.MachineID,
245+
MachineID: c.MachineID,
246+
Container: c.Container,
250247
})
251248
}
252249
}
@@ -295,9 +292,8 @@ func reconcileGlobalContainer(
295292
continue
296293
}
297294
ops = append(ops, &RemoveContainerOperation{
298-
ServiceID: serviceID,
299-
ContainerID: old.Container.ID,
300-
MachineID: old.MachineID,
295+
MachineID: old.MachineID,
296+
Container: old.Container,
301297
})
302298
}
303299
break
@@ -338,9 +334,8 @@ func reconcileGlobalContainer(
338334
// Remove the old containers.
339335
for _, c := range containers {
340336
ops = append(ops, &RemoveContainerOperation{
341-
ServiceID: serviceID,
342-
ContainerID: c.Container.ID,
343-
MachineID: c.MachineID,
337+
MachineID: c.MachineID,
338+
Container: c.Container,
344339
})
345340
}
346341

0 commit comments

Comments
 (0)