import re
import binascii
import yaml
+import string
+import secrets
from enum import Enum
from juju.machine import Machine
from juju.application import Application
from juju.action import Action
from juju.unit import Unit
from n2vc.exceptions import N2VCInvalidCertificate
+from typing import Tuple
def base64_to_cacert(b64string):
try:
cacert = base64.b64decode(b64string).decode("utf-8")
- cacert = re.sub(r"\\n", r"\n", cacert,)
+ cacert = re.sub(
+ r"\\n",
+ r"\n",
+ cacert,
+ )
except binascii.Error as e:
raise N2VCInvalidCertificate(message="Invalid CA Certificate: {}".format(e))
},
}
-DB_DATA = Dict(
- {
- "api_endpoints": Dict(
- {"table": "admin", "filter": {"_id": "juju"}, "key": "api_endpoints"}
- )
- }
-)
-
def obj_to_yaml(obj: object) -> str:
"""
yaml_text = obj_to_yaml(obj)
# parse to dict
return yaml.load(yaml_text, Loader=yaml.Loader)
+
+
+def get_ee_id_components(ee_id: str) -> Tuple[str, str, str]:
+ """
+ Get model, application and machine components from an execution environment id
+ :param ee_id:
+ :return: model_name, application_name, machine_id
+ """
+ parts = ee_id.split(".")
+ if len(parts) != 3:
+ raise Exception("invalid ee id.")
+ model_name = parts[0]
+ application_name = parts[1]
+ machine_id = parts[2]
+ return model_name, application_name, machine_id
+
+
+def generate_random_alfanum_string(size: int) -> str:
+ """
+ Generate random alfa-numeric string with a size given by argument
+ :param size:
+ :return: random generated string
+ """
+
+ return "".join(
+ secrets.choice(string.ascii_letters + string.digits) for i in range(size)
+ )