Skip to content

Commit 4e1dc86

Browse files
committed
cleanups
1 parent a2f1731 commit 4e1dc86

1 file changed

Lines changed: 36 additions & 18 deletions

File tree

cmd/ubackup/dockerdiscovery.go

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ func dockerDiscoverBackupTargets(ctx context.Context, dockerEndpoint string) ([]
4343

4444
targets := []ubtypes.BackupTarget{}
4545

46-
for _, inspected := range inspecteds {
46+
for _, container := range inspecteds {
4747
foundBackupCommand := ""
4848

49-
for _, envSerialized := range inspected.Config.Env {
49+
for _, envSerialized := range container.Config.Env {
5050
key, value := envvar.Parse(envSerialized)
5151
if key == backupCommandEnvKey {
5252
foundBackupCommand = value
@@ -57,36 +57,49 @@ func dockerDiscoverBackupTargets(ctx context.Context, dockerEndpoint string) ([]
5757
continue
5858
}
5959

60-
serviceName := inspected.Config.Labels[udocker.SwarmServiceNameLabelKey]
60+
serviceName := container.Config.Labels[udocker.SwarmServiceNameLabelKey]
6161
if serviceName == "" {
6262
serviceName = "none"
6363
}
6464

65-
// Docker CLI truncates ids to this long. using same here to shorten filenames
66-
taskId := inspected.Id[0:12]
67-
68-
// FIXME: this doesn't support spaces..
69-
backupCommandParsed := strings.Split(foundBackupCommand, " ")
70-
71-
dockerExecCmd := append([]string{
72-
"docker",
73-
"exec",
74-
taskId,
75-
}, backupCommandParsed...)
76-
77-
snapshotter := newCommandOutputSnapshotter(dockerExecCmd, "")
65+
snapshotter := createSnapshotter(foundBackupCommand, container)
66+
if snapshotter == nil { // warning was logged
67+
continue
68+
}
7869

7970
targets = append(targets, ubtypes.BackupTarget{
8071
ServiceName: serviceName,
81-
TaskId: taskId,
72+
TaskId: dockerShortenContainerId(container), // for shorter backup filenames
8273
Snapshotter: snapshotter,
8374
})
8475
}
8576

8677
return targets, nil
8778
}
8879

89-
func inspectAllContainers(ctx context.Context, containerMetas []udocker.ContainerListItem, base string, dockerClient *http.Client) ([]udocker.Container, error) {
80+
// "cat /data/example.db" => ["docker", "exec", "cat", "/data/example.db"]
81+
func createSnapshotter(
82+
backupCommand string,
83+
container udocker.Container,
84+
) ubtypes.Snapshotter {
85+
// FIXME: this doesn't support spaces..
86+
backupCommandParts := strings.Split(backupCommand, " ")
87+
88+
dockerExecCmd := append([]string{
89+
"docker",
90+
"exec",
91+
dockerShortenContainerId(container), // for less verbose log messages
92+
}, backupCommandParts...)
93+
94+
return newCommandOutputSnapshotter(dockerExecCmd, "")
95+
}
96+
97+
func inspectAllContainers(
98+
ctx context.Context,
99+
containerMetas []udocker.ContainerListItem,
100+
base string,
101+
dockerClient *http.Client,
102+
) ([]udocker.Container, error) {
90103
containers := []udocker.Container{}
91104

92105
for _, meta := range containerMetas {
@@ -107,3 +120,8 @@ func inspectAllContainers(ctx context.Context, containerMetas []udocker.Containe
107120

108121
return containers, nil
109122
}
123+
124+
func dockerShortenContainerId(container udocker.Container) string {
125+
// Docker CLI truncates ids to this long
126+
return container.Id[0:12]
127+
}

0 commit comments

Comments
 (0)