# See the License for the specific language governing permissions and
# limitations under the License.
+import base64
+import re
+import binascii
+import yaml
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
+
+
+def base64_to_cacert(b64string):
+ """Convert the base64-encoded string containing the VCA CACERT.
+
+ The input string....
+
+ """
+ try:
+ cacert = base64.b64decode(b64string).decode("utf-8")
+
+ cacert = re.sub(
+ r"\\n",
+ r"\n",
+ cacert,
+ )
+ except binascii.Error as e:
+ raise N2VCInvalidCertificate(message="Invalid CA Certificate: {}".format(e))
+
+ return cacert
class N2VCDeploymentStatus(Enum):
},
}
-DB_DATA = Dict(
- {
- "api_endpoints": Dict(
- {"table": "admin", "filter": {"_id": "juju"}, "key": "api_endpoints"}
- )
- }
-)
+
+def obj_to_yaml(obj: object) -> str:
+ """
+ Converts object to yaml format
+ :return: yaml data
+ """
+ # dump to yaml
+ dump_text = yaml.dump(obj, default_flow_style=False, indent=2)
+ # split lines
+ lines = dump_text.splitlines()
+ # remove !!python/object tags
+ yaml_text = ""
+ for line in lines:
+ index = line.find("!!python/object")
+ if index >= 0:
+ line = line[:index]
+ yaml_text += line + "\n"
+ return yaml_text
+
+
+def obj_to_dict(obj: object) -> dict:
+ """
+ Converts object to dictionary format
+ :return: dict data
+ """
+ # convert obj to yaml
+ yaml_text = obj_to_yaml(obj)
+ # parse to dict
+ return yaml.load(yaml_text, Loader=yaml.Loader)