Confirmation of chosen preset self-service portal

This commit is contained in:
strNophix 2022-04-09 11:08:46 +02:00
parent 777d0cfbd7
commit 55a487fed3

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
from __future__ import annotations from __future__ import annotations
from email.policy import default
from pathlib import Path from pathlib import Path
from os import path from os import path
import subprocess as sub import subprocess as sub
@ -57,6 +58,11 @@ class Prompter:
prompt = self._build_prompt(prompt) prompt = self._build_prompt(prompt)
return Prompter.input(prompt, lambda x: x in options) return Prompter.input(prompt, lambda x: x in options)
def take_confirmation(self, prompt: str, default: str = "y") -> bool:
prompt = self._build_prompt(prompt)
i = Prompter.input(prompt, lambda x: x.lower() in ["y", "n"], default=default)
return i == "y"
@staticmethod @staticmethod
def input(prompt: str, def input(prompt: str,
validate: Callable[[str], bool], validate: Callable[[str], bool],
@ -68,7 +74,6 @@ class Prompter:
if validate(i): if validate(i):
return i return i
def get_env_list(customer: str) -> list[str]: def get_env_list(customer: str) -> list[str]:
"""Fetches and parses a list of a customer's environments """Fetches and parses a list of a customer's environments
@ -114,13 +119,14 @@ def main() -> int:
print( print(
f"NOTE: Kies een albestaande omgevingen {envs} of iets nieuws..." f"NOTE: Kies een albestaande omgevingen {envs} of iets nieuws..."
) )
fmt = "Omgevingsnaam:" fmt = "Omgevingsnaam: "
env_name = p.take_input(fmt, RE_TEXT) env_name = p.take_input(fmt, RE_TEXT)
while True:
templates = ["production", "acceptance", "test", "custom"] templates = ["production", "acceptance", "test", "custom"]
fmt = f"Het type omgeving {templates}: " fmt = f"Het type omgeving {templates}: "
template_name = p.take_choice(fmt, templates) template_name = p.take_choice(fmt, templates)
if template_name == "custom": if template_name == "custom":
""" """
Asks for all machine's individually Asks for all machine's individually
@ -137,6 +143,7 @@ def main() -> int:
amnt_nginx_web = "2" amnt_nginx_web = "2"
amnt_nginx_lb = "1" amnt_nginx_lb = "1"
amnt_psql = "1" amnt_psql = "1"
elif template_name == "acceptance": elif template_name == "acceptance":
amnt_nginx_web = "1" amnt_nginx_web = "1"
amnt_nginx_lb = "0" amnt_nginx_lb = "0"
@ -146,6 +153,23 @@ def main() -> int:
amnt_nginx_web = "1" amnt_nginx_web = "1"
amnt_nginx_lb = "0" amnt_nginx_lb = "0"
amnt_psql = "0" amnt_psql = "0"
# TODO: migrate different machine types to a dict model
print(end="\n")
print("Deze omgeving bevat:")
if amnt_nginx_web > "0":
print(f" - {amnt_nginx_web} Nginx webserver(s)")
if amnt_nginx_lb > "0":
print(f" - {amnt_nginx_lb} Nginx loadbalancer(s)")
if amnt_psql > "0":
print(f" - {amnt_psql} Postgres instance(s)")
print(end="\n")
if p.take_confirmation("Bevestig (Y/n): "):
break
""" """
Define the format for templating ip-addresses.`{}` is required Define the format for templating ip-addresses.`{}` is required
and will be subbed at runtime with the correct octet. and will be subbed at runtime with the correct octet.