@ -1,6 +1,7 @@
package actions
package actions
import (
import (
"errors"
"github.com/containrrr/watchtower/internal/util"
"github.com/containrrr/watchtower/internal/util"
"github.com/containrrr/watchtower/pkg/container"
"github.com/containrrr/watchtower/pkg/container"
"github.com/containrrr/watchtower/pkg/lifecycle"
"github.com/containrrr/watchtower/pkg/lifecycle"
@ -25,11 +26,13 @@ func Update(client container.Client, params types.UpdateParams) error {
return err
return err
}
}
for i , container := range containers {
for i , targetContainer := range containers {
stale , err := client . IsContainerStale ( container )
stale , err := client . IsContainerStale ( targetContainer )
if stale && ! params . NoRestart && ! params . MonitorOnly && ! targetContainer . HasImageInfo ( ) {
err = errors . New ( "no available image info" )
}
if err != nil {
if err != nil {
log . Infof ( "Unable to update container %s. Proceeding to next." , containers [ i ] . Name ( ) )
log . Infof ( "Unable to update container %q: %v. Proceeding to next." , containers [ i ] . Name ( ) , err )
log . Debug ( err )
stale = false
stale = false
}
}
containers [ i ] . Stale = stale
containers [ i ] . Stale = stale
@ -89,12 +92,12 @@ func stopStaleContainer(container container.Container, client container.Client,
func restartContainersInSortedOrder ( containers [ ] container . Container , client container . Client , params types . UpdateParams ) {
func restartContainersInSortedOrder ( containers [ ] container . Container , client container . Client , params types . UpdateParams ) {
imageIDs := make ( map [ string ] bool )
imageIDs := make ( map [ string ] bool )
for _ , c ontainer := range containers {
for _ , staleC ontainer := range containers {
if ! c ontainer. Stale {
if ! staleC ontainer. Stale {
continue
continue
}
}
restartStaleContainer ( c ontainer, client , params )
restartStaleContainer ( staleC ontainer, client , params )
imageIDs [ c ontainer. ImageID ( ) ] = true
imageIDs [ staleC ontainer. ImageID ( ) ] = true
}
}
if params . Cleanup {
if params . Cleanup {
for imageID := range imageIDs {
for imageID := range imageIDs {