return domains of internal apps

This commit is contained in:
Maarten de Waard 2022-09-26 13:42:13 +02:00
parent a2019a32d0
commit fd28d5b774
No known key found for this signature in database
GPG key ID: 1D3E893A657CC8DA
3 changed files with 27 additions and 4 deletions

View file

@ -33,14 +33,22 @@ class App(db.Model):
if self.external: if self.external:
return self.url return self.url
# TODO: Get URL from Kubernetes # Get domain name from configmap
return "unknown" ks_config_map = k8s.get_kubernetes_config_map_data(
f"stackspin-{self.slug}-kustomization-variables",
"flux-system")
domain_key = f"{self.slug}_domain"
if ks_config_map is None or domain_key not in ks_config_map.keys():
return None
return ks_config_map[domain_key]
def get_status(self): def get_status(self):
"""Returns a string that describes the app state in the cluster""" """Returns a string that describes the app state in the cluster"""
if self.external: if self.external:
return("External app") return "External app"
# TODO: Get some kind of caching for those values, as this is called # TODO: Get some kind of caching for those values, as this is called

View file

@ -108,7 +108,7 @@ def list_app():
apps = App.query.all() apps = App.query.all()
for obj in apps: for obj in apps:
print(f"App name: {obj.name} \t Slug: {obj.slug}") print(f"App name: {obj.name}\tSlug: {obj.slug},\tURL: {obj.get_url()}\tStatus: {obj.get_status()}")
@app_cli.command( @app_cli.command(

View file

@ -85,6 +85,21 @@ def get_kubernetes_secret_data(secret_name, namespace):
return None return None
return secret return secret
def get_kubernetes_config_map_data(config_map_name, namespace):
"""
Returns the contents of a kubernetes config map.
Returns None if the config map does not exist.
"""
api_instance = client.CoreV1Api()
try:
config_map = api_instance.read_namespaced_config_map(config_map_name, namespace).data
except ApiException as ex:
# 404 is expected when the optional secret does not exist.
if ex.status != 404:
raise ex
return None
return config_map
def store_kubernetes_secret(secret_dict, namespace, update=False): def store_kubernetes_secret(secret_dict, namespace, update=False):
"""Stores either a new secret in the cluster, or updates an existing one.""" """Stores either a new secret in the cluster, or updates an existing one."""