From 62b68419dee81972c0ce6e522d772050e187d9db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Sat, 26 Feb 2022 19:11:46 +0100 Subject: [PATCH] add instance labels. --- internal/config/room.go | 11 +++++++++-- internal/room/manager.go | 17 +++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/internal/config/room.go b/internal/config/room.go index 404ae5a..33fbd3b 100644 --- a/internal/config/room.go +++ b/internal/config/room.go @@ -24,8 +24,9 @@ type Room struct { MountsWhitelist []string - InstanceName string - InstanceUrl string + InstanceName string + InstanceUrl string + InstanceLabels []string TraefikDomain string TraefikEntrypoint string @@ -95,6 +96,11 @@ func (Room) Init(cmd *cobra.Command) error { return err } + cmd.PersistentFlags().StringSlice("instance.labels", []string{}, "additional instance labels appended to a room") + if err := viper.BindPFlag("instance.labels", cmd.PersistentFlags().Lookup("instance.labels")); err != nil { + return err + } + // Traefik cmd.PersistentFlags().String("traefik.domain", "", "traefik: domain on which will be container hosted (if empty or '*', match all; for neko-rooms as subdomain use '*.domain.tld')") @@ -184,6 +190,7 @@ func (s *Room) Set() { } s.InstanceUrl = viper.GetString("instance.url") + s.InstanceLabels = viper.GetStringSlice("instance.labels") s.TraefikDomain = viper.GetString("traefik.domain") s.TraefikEntrypoint = viper.GetString("traefik.entrypoint") diff --git a/internal/room/manager.go b/internal/room/manager.go index 33cb5b0..256e1b2 100644 --- a/internal/room/manager.go +++ b/internal/room/manager.go @@ -239,6 +239,23 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, erro labels[k] = v } + // add custom instance labels + for _, label := range manager.config.InstanceLabels { + // replace dynamic values in labels + label = strings.Replace(label, "{containerName}", containerName, 1) + label = strings.Replace(label, "{roomName}", roomName, 1) + label = strings.Replace(label, "{traefikEntrypoint}", manager.config.TraefikEntrypoint, 1) + + v := strings.SplitN(label, ":", 2) + if len(v) != 2 { + manager.logger.Warn().Str("label", label).Msg("invalid instance label") + continue + } + + key, val := v[0], v[1] + labels[key] = val + } + // // Set environment variables //