Bug 1991 fixed: modified LCM charm secret name to a standardized one
[osm/devops.git] / installers / charm / lcm / src / charm.py
index 2fb90e8..7c64418 100755 (executable)
@@ -27,10 +27,10 @@ import logging
 from typing import NoReturn, Optional
 
 
 from typing import NoReturn, Optional
 
 
+from charms.kafka_k8s.v0.kafka import KafkaEvents, KafkaRequires
 from ops.main import main
 from opslib.osm.charm import CharmedOsmBase, RelationsMissing
 from opslib.osm.interfaces.http import HttpClient
 from ops.main import main
 from opslib.osm.charm import CharmedOsmBase, RelationsMissing
 from opslib.osm.interfaces.http import HttpClient
-from opslib.osm.interfaces.kafka import KafkaClient
 from opslib.osm.interfaces.mongo import MongoClient
 from opslib.osm.pod import ContainerV3Builder, PodRestartPolicy, PodSpecV3Builder
 from opslib.osm.validator import ModelValidator, validator
 from opslib.osm.interfaces.mongo import MongoClient
 from opslib.osm.pod import ContainerV3Builder, PodRestartPolicy, PodSpecV3Builder
 from opslib.osm.validator import ModelValidator, validator
@@ -140,17 +140,36 @@ class ConfigModel(ModelValidator):
 
 
 class LcmCharm(CharmedOsmBase):
 
 
 class LcmCharm(CharmedOsmBase):
+
+    on = KafkaEvents()
+
     def __init__(self, *args) -> NoReturn:
         super().__init__(
             *args,
             oci_image="image",
     def __init__(self, *args) -> NoReturn:
         super().__init__(
             *args,
             oci_image="image",
-            debug_mode_config_key="debug_mode",
-            debug_pubkey_config_key="debug_pubkey",
             vscode_workspace=VSCODE_WORKSPACE,
         )
             vscode_workspace=VSCODE_WORKSPACE,
         )
-        self.kafka_client = KafkaClient(self, "kafka")
-        self.framework.observe(self.on["kafka"].relation_changed, self.configure_pod)
-        self.framework.observe(self.on["kafka"].relation_broken, self.configure_pod)
+        if self.config.get("debug_mode"):
+            self.enable_debug_mode(
+                pubkey=self.config.get("debug_pubkey"),
+                hostpaths={
+                    "LCM": {
+                        "hostpath": self.config.get("debug_lcm_local_path"),
+                        "container-path": "/usr/lib/python3/dist-packages/osm_lcm",
+                    },
+                    "N2VC": {
+                        "hostpath": self.config.get("debug_n2vc_local_path"),
+                        "container-path": "/usr/lib/python3/dist-packages/n2vc",
+                    },
+                    "osm_common": {
+                        "hostpath": self.config.get("debug_common_local_path"),
+                        "container-path": "/usr/lib/python3/dist-packages/osm_common",
+                    },
+                },
+            )
+        self.kafka = KafkaRequires(self)
+        self.framework.observe(self.on.kafka_available, self.configure_pod)
+        self.framework.observe(self.on.kafka_broken, self.configure_pod)
 
         self.mongodb_client = MongoClient(self, "mongodb")
         self.framework.observe(self.on["mongodb"].relation_changed, self.configure_pod)
 
         self.mongodb_client = MongoClient(self, "mongodb")
         self.framework.observe(self.on["mongodb"].relation_changed, self.configure_pod)
@@ -163,7 +182,7 @@ class LcmCharm(CharmedOsmBase):
     def _check_missing_dependencies(self, config: ConfigModel):
         missing_relations = []
 
     def _check_missing_dependencies(self, config: ConfigModel):
         missing_relations = []
 
-        if self.kafka_client.is_missing_data_in_unit():
+        if not self.kafka.host or not self.kafka.port:
             missing_relations.append("kafka")
         if not config.mongodb_uri and self.mongodb_client.is_missing_data_in_unit():
             missing_relations.append("mongodb")
             missing_relations.append("kafka")
         if not config.mongodb_uri and self.mongodb_client.is_missing_data_in_unit():
             missing_relations.append("mongodb")
@@ -193,9 +212,9 @@ class LcmCharm(CharmedOsmBase):
         )
 
         # Add secrets to the pod
         )
 
         # Add secrets to the pod
-        lcm_secret_name = f"{self.app.name}-lcm-secret"
+        mongodb_secret_name = f"{self.app.name}-mongodb-secret"
         pod_spec_builder.add_secret(
         pod_spec_builder.add_secret(
-            lcm_secret_name,
+            mongodb_secret_name,
             {
                 "uri": config.mongodb_uri or self.mongodb_client.connection_string,
                 "commonkey": config.database_commonkey,
             {
                 "uri": config.mongodb_uri or self.mongodb_client.connection_string,
                 "commonkey": config.database_commonkey,
@@ -222,8 +241,8 @@ class LcmCharm(CharmedOsmBase):
                 "OSMLCM_RO_TENANT": "osm",
                 # Kafka configuration
                 "OSMLCM_MESSAGE_DRIVER": "kafka",
                 "OSMLCM_RO_TENANT": "osm",
                 # Kafka configuration
                 "OSMLCM_MESSAGE_DRIVER": "kafka",
-                "OSMLCM_MESSAGE_HOST": self.kafka_client.host,
-                "OSMLCM_MESSAGE_PORT": self.kafka_client.port,
+                "OSMLCM_MESSAGE_HOST": self.kafka.host,
+                "OSMLCM_MESSAGE_PORT": self.kafka.port,
                 # Database configuration
                 "OSMLCM_DATABASE_DRIVER": "mongo",
                 # Storage configuration
                 # Database configuration
                 "OSMLCM_DATABASE_DRIVER": "mongo",
                 # Storage configuration
@@ -234,7 +253,7 @@ class LcmCharm(CharmedOsmBase):
             }
         )
         container_builder.add_secret_envs(
             }
         )
         container_builder.add_secret_envs(
-            secret_name=lcm_secret_name,
+            secret_name=mongodb_secret_name,
             envs={
                 "OSMLCM_DATABASE_URI": "uri",
                 "OSMLCM_DATABASE_COMMONKEY": "commonkey",
             envs={
                 "OSMLCM_DATABASE_URI": "uri",
                 "OSMLCM_DATABASE_COMMONKEY": "commonkey",
@@ -297,7 +316,7 @@ class LcmCharm(CharmedOsmBase):
 VSCODE_WORKSPACE = {
     "folders": [
         {"path": "/usr/lib/python3/dist-packages/osm_lcm"},
 VSCODE_WORKSPACE = {
     "folders": [
         {"path": "/usr/lib/python3/dist-packages/osm_lcm"},
-        {"path": "/usr/lib/python3/dist-packages/osm_n2vc"},
+        {"path": "/usr/lib/python3/dist-packages/n2vc"},
         {"path": "/usr/lib/python3/dist-packages/osm_common"},
     ],
     "settings": {},
         {"path": "/usr/lib/python3/dist-packages/osm_common"},
     ],
     "settings": {},