const to config.

This commit is contained in:
m1k1o
2021-03-08 00:03:40 +01:00
parent 5b13de3af6
commit 52e0681cfe
3 changed files with 27 additions and 14 deletions
+16
View File
@@ -15,6 +15,9 @@ type Room struct {
EprMin uint16
EprMax uint16
NekoImage string
InstanceName string
TraefikDomain string
TraefikEntrypoint string
TraefikCertresolver string
@@ -32,6 +35,16 @@ func (Room) Init(cmd *cobra.Command) error {
return err
}
cmd.PersistentFlags().String("neko_image", "m1k1o/neko:latest", "neko image to be used")
if err := viper.BindPFlag("neko_image", cmd.PersistentFlags().Lookup("neko_image")); err != nil {
return err
}
cmd.PersistentFlags().String("instance_name", "neko-rooms", "unique instance name (if running muliple on the same host)")
if err := viper.BindPFlag("instance_name", cmd.PersistentFlags().Lookup("instance_name")); err != nil {
return err
}
cmd.PersistentFlags().String("traefik_domain", "neko.lan", "traefik: domain on which will be container hosted")
if err := viper.BindPFlag("traefik_domain", cmd.PersistentFlags().Lookup("traefik_domain")); err != nil {
return err
@@ -90,6 +103,9 @@ func (s *Room) Set() {
s.EprMax = max
}
s.NekoImage = viper.GetString("neko_image")
s.InstanceName = viper.GetString("instance_name")
s.TraefikDomain = viper.GetString("traefik_domain")
s.TraefikEntrypoint = viper.GetString("traefik_entrypoint")
s.TraefikCertresolver = viper.GetString("traefik_certresolver")
+4 -4
View File
@@ -15,8 +15,8 @@ func (manager *RoomManagerCtx) listContainers() ([]dockerTypes.Container, error)
result := []dockerTypes.Container{}
for _, container := range containers {
val, ok := container.Labels["m1k1o.neko_rooms.canary"]
if !ok || val != labelCanary {
val, ok := container.Labels["m1k1o.neko_rooms.instance"]
if !ok || val != manager.config.InstanceName {
continue
}
@@ -32,8 +32,8 @@ func (manager *RoomManagerCtx) inspectContainer(id string) (*dockerTypes.Contain
return nil, err
}
val, ok := container.Config.Labels["m1k1o.neko_rooms.canary"]
if !ok || val != labelCanary {
val, ok := container.Config.Labels["m1k1o.neko_rooms.instance"]
if !ok || val != manager.config.InstanceName {
return nil, fmt.Errorf("This container does not belong to neko_rooms.")
}
+7 -10
View File
@@ -21,10 +21,7 @@ import (
)
const (
nekoImage = "m1k1o/neko:latest"
containerPrefix = "neko-room-"
frontendPort = 8080
labelCanary = "m1k1o-neko-rooms"
)
func New(config *config.Room) *RoomManagerCtx {
@@ -122,7 +119,7 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, erro
exposedPorts[portKey] = struct{}{}
}
containerName := containerPrefix + roomName
containerName := manager.config.InstanceName + "-" + roomName
urlProto := "http"
if manager.config.TraefikCertresolver != "" {
@@ -131,11 +128,11 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, erro
labels := map[string]string{
// Set internal labels
"m1k1o.neko_rooms.name": roomName,
"m1k1o.neko_rooms.url": urlProto + "://" + manager.config.TraefikDomain + "/" + roomName + "/",
"m1k1o.neko_rooms.canary": labelCanary,
"m1k1o.neko_rooms.epr.min": fmt.Sprintf("%d", epr.Min),
"m1k1o.neko_rooms.epr.max": fmt.Sprintf("%d", epr.Max),
"m1k1o.neko_rooms.name": roomName,
"m1k1o.neko_rooms.url": urlProto + "://" + manager.config.TraefikDomain + "/" + roomName + "/",
"m1k1o.neko_rooms.instance": manager.config.InstanceName,
"m1k1o.neko_rooms.epr.min": fmt.Sprintf("%d", epr.Min),
"m1k1o.neko_rooms.epr.max": fmt.Sprintf("%d", epr.Max),
// Set traefik labels
"traefik.enable": "true",
@@ -168,7 +165,7 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, erro
fmt.Sprintf("NEKO_NAT1TO1=%s", strings.Join(manager.config.NAT1To1IPs, ",")),
}, settings.ToEnv()...),
// Name of the image as it was passed by the operator (e.g. could be symbolic)
Image: nekoImage,
Image: manager.config.NekoImage,
// List of labels set to this container
Labels: labels,
}