diff --git a/building_manager.py b/building_manager.py index b7a9adc96614a68a20e61347ea20791cd57a2299..f93a014c55f4949c2e3ffa620d0f6163d358911e 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