Compare commits

..

25 Commits

Author SHA1 Message Date
Frederik Ring
87ea8d0930 Improve logging 2024-01-29 16:20:50 +01:00
Frederik Ring
7d489a95e3 Rename and deprecate BACKUP_STOP_CONTAINER_LABEL 2024-01-29 16:16:44 +01:00
Frederik Ring
57e7f2af9e Reflect changes in naming 2024-01-28 20:29:08 +01:00
Frederik Ring
4639b21f3b Choose better filename 2024-01-28 20:29:08 +01:00
Frederik Ring
9acd6dc8ab Timeout when scaling down services should be configurable 2024-01-28 20:29:08 +01:00
Frederik Ring
409496af24 Timer is more suitable for timeout race 2024-01-28 20:29:08 +01:00
Frederik Ring
542d1fa69f Inline handling of in-swarm container level restart 2024-01-28 20:29:08 +01:00
Frederik Ring
2bc94d8a5b Time out after five minutes of not reaching desired container count 2024-01-28 20:29:08 +01:00
Frederik Ring
26bbc66cd5 Factor out code for service updating 2024-01-28 20:29:08 +01:00
Frederik Ring
09cc1f5c60 Move docker interaction code into own file 2024-01-28 20:29:08 +01:00
Frederik Ring
7ad6fc9355 Scale services concurrently 2024-01-28 20:29:08 +01:00
Frederik Ring
bb37b8b1d8 Add additional check if all containers have been removed 2024-01-28 20:29:08 +01:00
Frederik Ring
bf1d13b78c Document script behavior on label collision 2024-01-28 20:29:08 +01:00
Frederik Ring
538a069a70 Check whether container and service labels collide 2024-01-28 20:29:08 +01:00
Frederik Ring
78a89c1a93 Log warnings from Docker when updating services 2024-01-28 20:29:08 +01:00
Frederik Ring
94aa33369f Do not rely on PreviousSpec for storing desired replica count 2024-01-28 20:29:08 +01:00
Frederik Ring
f4497177b5 Document services stats 2024-01-28 20:29:08 +01:00
Frederik Ring
95e9e9945d Downgrade Docker CLI to match client 2024-01-28 20:29:08 +01:00
Frederik Ring
fee8cb234c Document scale-up/down approach in docs 2024-01-28 20:29:08 +01:00
Frederik Ring
b7855605d4 Clean up error and log messages 2024-01-28 20:29:08 +01:00
Frederik Ring
f14b796aab In test, label both services 2024-01-28 20:29:08 +01:00
Frederik Ring
978e900308 Use progress tool from Docker CLI 2024-01-28 20:29:08 +01:00
Frederik Ring
511b79bd43 Scale services back up 2024-01-28 20:29:08 +01:00
Frederik Ring
8ef7fa0d5d Try scaling down services 2024-01-28 20:29:08 +01:00
Frederik Ring
270ca65efa Query for labeled services as well 2024-01-28 20:29:08 +01:00
4 changed files with 25 additions and 23 deletions

View File

@@ -15,9 +15,7 @@ func main() {
}
unlock, err := s.lock("/var/lock/dockervolumebackup.lock")
defer func() {
s.must(unlock())
}()
defer s.must(unlock())
s.must(err)
defer func() {

View File

@@ -170,23 +170,26 @@ func (s *script) stopContainersAndServices() (func() error, error) {
}
}
s.logger.Info(
fmt.Sprintf(
"Stopping %d out of %d running container(s) as they were labeled %s.",
len(containersToStop),
len(allContainers),
filterMatchLabel,
),
)
if isDockerSwarm {
s.logger.Info(
fmt.Sprintf(
"Scaling down %d out of %d active service(s) as they were labeled %s.",
"Stopping %d out of %d running container(s) and scaling down %d out of %d active service(s) as they were labeled %s.",
len(containersToStop),
len(allContainers),
len(servicesToScaleDown),
len(allServices),
filterMatchLabel,
),
)
} else {
s.logger.Info(
fmt.Sprintf(
"Stopping %d out of %d running container(s) as they were labeled %s.",
len(containersToStop),
len(allContainers),
filterMatchLabel,
),
)
}
var stoppedContainers []types.Container
@@ -317,20 +320,21 @@ func (s *script) stopContainersAndServices() (func() error, error) {
errors.Join(allErrors...),
)
}
s.logger.Info(
fmt.Sprintf(
"Restarted %d container(s).",
len(stoppedContainers),
),
)
if isDockerSwarm {
s.logger.Info(
fmt.Sprintf(
"Scaled %d service(s) back up.",
"Restarted %d container(s) and %d service(s).",
len(stoppedContainers),
len(scaledDownServices),
),
)
} else {
s.logger.Info(
fmt.Sprintf(
"Restarted %d container(s).",
len(stoppedContainers),
),
)
}
return nil

2
go.mod
View File

@@ -10,7 +10,7 @@ require (
github.com/docker/cli v24.0.1+incompatible
github.com/docker/docker v24.0.7+incompatible
github.com/gofrs/flock v0.8.1
github.com/klauspost/compress v1.17.5
github.com/klauspost/compress v1.17.4
github.com/leekchan/timeutil v0.0.0-20150802142658-28917288c48d
github.com/minio/minio-go/v7 v7.0.66
github.com/offen/envconfig v1.5.0

4
go.sum
View File

@@ -456,8 +456,8 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.17.5 h1:d4vBd+7CHydUqpFBgUEKkSdtSugf9YFmSkvUYPquI5E=
github.com/klauspost/compress v1.17.5/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4=
github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc=
github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=