mirror of
https://github.com/zix99/traefik-lazyload.git
synced 2025-12-21 13:23:04 +01:00
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package service
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
"traefik-lazyload/pkg/config"
|
|
|
|
"github.com/docker/docker/api/types"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func labelOrDefault(ct *types.Container, sublabel, dflt string) (string, bool) {
|
|
if val, ok := ct.Labels[config.SubLabel(sublabel)]; ok {
|
|
return val, true
|
|
}
|
|
return dflt, false
|
|
}
|
|
|
|
func labelOrDefaultArr(ct *types.Container, sublabel string) ([]string, bool) {
|
|
if val, ok := ct.Labels[config.SubLabel(sublabel)]; ok {
|
|
return strings.Split(val, ","), true
|
|
}
|
|
return []string{}, false
|
|
}
|
|
|
|
func labelOrDefaultInt(ct *types.Container, sublabel string, dflt int) (int, bool) {
|
|
s, ok := labelOrDefault(ct, sublabel, "")
|
|
if !ok {
|
|
return dflt, false
|
|
}
|
|
|
|
if val, err := strconv.Atoi(s); err != nil {
|
|
logrus.Warnf("Unable to parse %s on %s: %v. Using default of %d", sublabel, containerShort(ct), err, dflt)
|
|
return dflt, false
|
|
} else {
|
|
return val, true
|
|
}
|
|
}
|
|
|
|
func labelOrDefaultDuration(ct *types.Container, sublabel string, dflt time.Duration) (time.Duration, bool) {
|
|
s, ok := labelOrDefault(ct, sublabel, "")
|
|
if !ok {
|
|
return dflt, false
|
|
}
|
|
|
|
if val, err := time.ParseDuration(s); err != nil {
|
|
logrus.Warnf("Unable to parse %s on %s: %v. Using default of %s", sublabel, containerShort(ct), err, dflt.String())
|
|
return dflt, false
|
|
} else {
|
|
return val, true
|
|
}
|
|
}
|