Major improvement in OSM charms

- Adapt all new operator charms to use the same pattern. They are all
using now this library that encapsulates the common logic for all
charms: https://github.com/davigar15/ops-lib-charmed-osm. That will be
eventually moved to gitlab, when it has a PyPI repository available
- Add unit tests to all charms
- Modify installer and bundles to point to the new charms
- Improve the build.sh script for building the charms

Change-Id: I0896ceb082d1b6a76b3560c07482a4135a220a3f
Signed-off-by: David Garcia <david.garcia@canonical.com>
diff --git a/installers/charm/nbi/src/pod_spec.py b/installers/charm/nbi/src/pod_spec.py
index b6291d4..b8f5904 100644
--- a/installers/charm/nbi/src/pod_spec.py
+++ b/installers/charm/nbi/src/pod_spec.py
@@ -98,12 +98,15 @@
     """
     config_validators = {
         "enable_test": lambda value, _: isinstance(value, bool),
-        "database_commonkey": lambda value, _: isinstance(value, str)
-        and len(value) > 1,
-        "log_level": lambda value, _: isinstance(value, str)
-        and value in ("INFO", "DEBUG"),
-        "auth_backend": lambda value, _: isinstance(value, str)
-        and (value == "internal" or value == "keystone"),
+        "database_commonkey": lambda value, _: (
+            isinstance(value, str) and len(value) > 1
+        ),
+        "log_level": lambda value, _: (
+            isinstance(value, str) and value in ("INFO", "DEBUG")
+        ),
+        "auth_backend": lambda value, _: (
+            isinstance(value, str) and (value == "internal" or value == "keystone")
+        ),
         "site_url": lambda value, _: isinstance(value, str)
         if value is not None
         else True,
@@ -118,8 +121,9 @@
     relation_validators = {
         "message_host": lambda value, _: isinstance(value, str),
         "message_port": lambda value, _: isinstance(value, int) and value > 0,
-        "database_uri": lambda value, _: isinstance(value, str)
-        and value.startswith("mongodb://"),
+        "database_uri": lambda value, _: (
+            isinstance(value, str) and value.startswith("mongodb://")
+        ),
         "prometheus_host": lambda value, _: isinstance(value, str),
         "prometheus_port": lambda value, _: isinstance(value, int) and value > 0,
         "keystone_host": lambda value, _: _validate_keystone_config(