return domains of internal apps
This commit is contained in:
parent
a2019a32d0
commit
fd28d5b774
3 changed files with 27 additions and 4 deletions
|
@ -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
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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."""
|
||||||
|
|
Loading…
Reference in a new issue