From aea6cb498f2db58432b295b0da87d266ee027ca3 Mon Sep 17 00:00:00 2001
From: Dobli <61doal1mst@hft-stuttgart.de>
Date: Mon, 28 Jan 2019 16:22:21 +0100
Subject: [PATCH] added lables for subdomains

---
 building_manager.py | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/building_manager.py b/building_manager.py
index b7a9adc..f93a014 100755
--- a/building_manager.py
+++ b/building_manager.py
@@ -149,6 +149,8 @@ def add_nodered_service(base_dir, hostname):
     template['deploy']['labels'].append(f'backup={hostname}')
     template['deploy']['labels'].extend(
         generate_traefik_path_labels(service_name, segment='main'))
+    template['deploy']['labels'].extend(
+        generate_traefik_subdomain_labels(service_name, segment='sub'))
 
     add_or_update_compose_service(compose_path, service_name, template)
 
@@ -209,6 +211,25 @@ def generate_traefik_host_labels(hostname, segment=None, priority=1):
     return label_list
 
 
+def generate_traefik_subdomain_labels(subdomain, segment=None, priority=2):
+    """Generates a traefik subdomain with necessary redirects
+
+    :subdomain: subdomain that will be assigned to a service
+    :segment: Optional traefik segment when using multiple rules
+    :priority: Priority of frontend rule
+    :returns: list of labels for traefik
+    """
+    label_list = []
+    # check segment
+    segment = f'.{segment}' if segment is not None else ''
+    # fill list
+    label_list.append(
+        f'traefik{segment}.frontend.rule='
+        f'HostRegexp:{subdomain}.{{domain:[a-zA-z0-9-]+}}')
+    label_list.append(f'traefik{segment}.frontend.priority={priority}')
+    return label_list
+
+
 def generate_traefik_path_labels(url_path, segment=None, priority=2):
     """Generates a traefik path url with necessary redirects
 
-- 
GitLab