Add container pause functionality

This commit is contained in:
Luka Markušić 2022-05-09 15:28:47 +02:00
parent 2fa6a8964a
commit badc92f192
4 changed files with 44 additions and 0 deletions

View file

@ -175,6 +175,18 @@ func (c *Container) Stop() error {
return c.Client.ContainerStop(context.Background(), c.ID, nil) return c.Client.ContainerStop(context.Background(), c.ID, nil)
} }
// Pause pauses the container
func (c *Container) Pause() error {
c.Log.Warn(fmt.Sprintf("pausing container %s", c.Name))
return c.Client.ContainerPause(context.Background(), c.ID)
}
// Unpause unpauses the container
func (c *Container) Unpause() error {
c.Log.Warn(fmt.Sprintf("unpausing container %s", c.Name))
return c.Client.ContainerUnpause(context.Background(), c.ID)
}
// Restart restarts the container // Restart restarts the container
func (c *Container) Restart() error { func (c *Container) Restart() error {
c.Log.Warn(fmt.Sprintf("restarting container %s", c.Name)) c.Log.Warn(fmt.Sprintf("restarting container %s", c.Name))

View file

@ -423,6 +423,27 @@ func (gui *Gui) handleContainersRemoveMenu(g *gocui.Gui, v *gocui.View) error {
return gui.createMenu("", options, len(options), handleMenuPress) return gui.createMenu("", options, len(options), handleMenuPress)
} }
func (gui *Gui) handleContainerPause(g *gocui.Gui, v *gocui.View) error {
container, err := gui.getSelectedContainer()
if err != nil {
return nil
}
return gui.WithWaitingStatus(gui.Tr.PausingStatus, func() error {
if container.Details.State.Paused {
err = container.Unpause()
} else {
err = container.Pause()
}
if err != nil {
return gui.createErrorPanel(gui.g, err.Error())
}
return gui.refreshContainersAndServices()
})
}
func (gui *Gui) handleContainerStop(g *gocui.Gui, v *gocui.View) error { func (gui *Gui) handleContainerStop(g *gocui.Gui, v *gocui.View) error {
container, err := gui.getSelectedContainer() container, err := gui.getSelectedContainer()
if err != nil { if err != nil {

View file

@ -220,6 +220,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Handler: gui.handleHideStoppedContainers, Handler: gui.handleHideStoppedContainers,
Description: gui.Tr.HideStopped, Description: gui.Tr.HideStopped,
}, },
{
ViewName: "containers",
Key: 'p',
Modifier: gocui.ModNone,
Handler: gui.handleContainerPause,
Description: gui.Tr.Pause,
},
{ {
ViewName: "containers", ViewName: "containers",
Key: 's', Key: 's',

View file

@ -42,11 +42,13 @@ type TranslationSet struct {
RestartingStatus string RestartingStatus string
StartingStatus string StartingStatus string
StoppingStatus string StoppingStatus string
PausingStatus string
RemovingStatus string RemovingStatus string
RunningCustomCommandStatus string RunningCustomCommandStatus string
RunningBulkCommandStatus string RunningBulkCommandStatus string
RemoveService string RemoveService string
Stop string Stop string
Pause string
Restart string Restart string
Start string Start string
Rebuild string Rebuild string
@ -112,6 +114,7 @@ func englishSet() TranslationSet {
RestartingStatus: "restarting", RestartingStatus: "restarting",
StartingStatus: "starting", StartingStatus: "starting",
StoppingStatus: "stopping", StoppingStatus: "stopping",
PausingStatus: "pausing",
RunningCustomCommandStatus: "running custom command", RunningCustomCommandStatus: "running custom command",
RunningBulkCommandStatus: "running bulk command", RunningBulkCommandStatus: "running bulk command",
@ -146,6 +149,7 @@ func englishSet() TranslationSet {
RemoveWithVolumes: "remove with volumes", RemoveWithVolumes: "remove with volumes",
RemoveService: "remove containers", RemoveService: "remove containers",
Stop: "stop", Stop: "stop",
Pause: "pause",
Restart: "restart", Restart: "restart",
Start: "start", Start: "start",
Rebuild: "rebuild", Rebuild: "rebuild",