X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Fcharm%2Fosm-nglcm%2Fsrc%2Fcharm.py;h=41698941c50c67ef5ea09787daa781913f5e0a1b;hb=refs%2Fchanges%2F86%2F13286%2F3;hp=6773aa8ace290caa1df1f8cc6c119883170801ba;hpb=fe67909cdef35dbf4357abad97f7710c8e83f584;p=osm%2Fdevops.git diff --git a/installers/charm/osm-nglcm/src/charm.py b/installers/charm/osm-nglcm/src/charm.py index 6773aa8a..41698941 100755 --- a/installers/charm/osm-nglcm/src/charm.py +++ b/installers/charm/osm-nglcm/src/charm.py @@ -30,6 +30,7 @@ See more: https://charmhub.io/osm import logging from typing import Any, Dict +from charms.data_platform_libs.v0.data_interfaces import DatabaseRequires from charms.osm_libs.v0.utils import ( CharmError, DebugMode, @@ -44,8 +45,6 @@ from ops.framework import EventSource, StoredState from ops.main import main from ops.model import ActiveStatus, Container -from legacy_interfaces import MongoClient - HOSTPATHS = [ HostPath( config="lcm-hostpath", @@ -82,7 +81,9 @@ class OsmNGLcmCharm(CharmBase): super().__init__(*args) self.vca = VcaRequires(self) self.temporal = TemporalRequires(self) - self.mongodb_client = MongoClient(self, "mongodb") + self.mongodb_client = DatabaseRequires( + self, "mongodb", database_name="osm", extra_user_roles="admin" + ) self._observe_charm_events() self.container: Container = self.unit.get_container(self.container_name) self.debug_mode = DebugMode(self, self._stored, self.container, HOSTPATHS) @@ -171,7 +172,7 @@ class OsmNGLcmCharm(CharmBase): self.on.config_changed: self._on_config_changed, self.on.update_status: self._on_update_status, # Relation events - self.on["mongodb"].relation_changed: self._on_config_changed, + self.mongodb_client.on.database_created: self._on_config_changed, self.on["mongodb"].relation_broken: self._on_required_relation_broken, self.on["temporal"].relation_changed: self._on_config_changed, self.on["temporal"].relation_broken: self._on_required_relation_broken, @@ -192,7 +193,7 @@ class OsmNGLcmCharm(CharmBase): logger.debug("check for missing relations") missing_relations = [] - if self.mongodb_client.is_missing_data_in_unit(): + if not self._is_database_available(): missing_relations.append("mongodb") if not self.temporal.host or not self.temporal.port: missing_relations.append("temporal") @@ -204,6 +205,12 @@ class OsmNGLcmCharm(CharmBase): logger.warning(error_msg) raise CharmError(error_msg) + def _is_database_available(self) -> bool: + try: + return self.mongodb_client.is_resource_created() + except KeyError: + return False + def _configure_service(self, container: Container) -> None: """Add Pebble layer with the lcm service.""" logger.debug(f"configuring {self.app.name} service") @@ -217,13 +224,13 @@ class OsmNGLcmCharm(CharmBase): "OSMLCM_GLOBAL_LOGLEVEL": self.config["log-level"].upper(), # Database configuration "OSMLCM_DATABASE_DRIVER": "mongo", - "OSMLCM_DATABASE_URI": self.mongodb_client.connection_string, + "OSMLCM_DATABASE_URI": self._get_mongodb_uri(), "OSMLCM_DATABASE_COMMONKEY": self.config["database-commonkey"], # Storage configuration "OSMLCM_STORAGE_DRIVER": "mongo", "OSMLCM_STORAGE_PATH": "/app/storage", "OSMLCM_STORAGE_COLLECTION": "files", - "OSMLCM_STORAGE_URI": self.mongodb_client.connection_string, + "OSMLCM_STORAGE_URI": self._get_mongodb_uri(), "OSMLCM_VCA_HELM_CA_CERTS": self.config["helm-ca-certs"], "OSMLCM_VCA_STABLEREPOURL": self.config["helm-stable-repo-url"], # Temporal configuration @@ -253,7 +260,7 @@ class OsmNGLcmCharm(CharmBase): self.service_name: { "override": "replace", "summary": "nslcm service", - "command": "python3 -m osm_lcm.nglcm -c /usr/lib/python3/dist-packages/osm_lcm/lcm.cfg", + "command": "python3 -m osm_lcm.nglcm -c /usr/lib/python3/dist-packages/osm_lcm/nglcm.cfg", "startup": "enabled", "user": "appuser", "group": "appuser", @@ -264,6 +271,9 @@ class OsmNGLcmCharm(CharmBase): logger.info(f"Layer: {layer_config}") return layer_config + def _get_mongodb_uri(self): + return list(self.mongodb_client.fetch_relation_data().values())[0]["uris"] + if __name__ == "__main__": # pragma: no cover main(OsmNGLcmCharm)