Removing osm_rovim_fos debug folder path from podspec ro charm
[osm/devops.git] / installers / charm / ro / src / charm.py
index 099c559..028dc0a 100755 (executable)
@@ -26,9 +26,9 @@ import base64
 import logging
 from typing import Dict, 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.kafka import KafkaClient
 from opslib.osm.interfaces.mongo import MongoClient
 from opslib.osm.interfaces.mysql import MysqlClient
 from opslib.osm.pod import (
@@ -81,6 +81,7 @@ class ConfigModel(ModelValidator):
     image_pull_policy: str
     debug_mode: bool
     security_context: bool
+    period_refresh_active: Optional[int]
 
     @validator("log_level")
     def validate_log_level(cls, v):
@@ -122,10 +123,20 @@ class ConfigModel(ModelValidator):
     def certificates_dict(cls):
         return _extract_certificates(cls.certificates) if cls.certificates else {}
 
+    @validator("period_refresh_active")
+    def validate_vim_refresh_period(cls, v):
+        if v and v < 60 and v != -1:
+            raise ValueError(
+                "Refresh Period is too tight, insert >= 60 seconds or disable using -1"
+            )
+        return v
+
 
 class RoCharm(CharmedOsmBase):
     """GrafanaCharm Charm."""
 
+    on = KafkaEvents()
+
     def __init__(self, *args) -> NoReturn:
         """Prometheus Charm constructor."""
         super().__init__(
@@ -144,9 +155,9 @@ class RoCharm(CharmedOsmBase):
                     **_get_ro_host_paths(self.config.get("debug_ro_local_path")),
                 },
             )
-        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)
+        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.mysql_client = MysqlClient(self, "mysql")
         self.framework.observe(self.on["mysql"].relation_changed, self.configure_pod)
@@ -176,10 +187,7 @@ class RoCharm(CharmedOsmBase):
         missing_relations = []
 
         if config.enable_ng_ro:
-            if (
-                self.kafka_client.is_missing_data_in_unit()
-                and self.kafka_client.is_missing_data_in_app()
-            ):
+            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")
@@ -272,7 +280,12 @@ class RoCharm(CharmedOsmBase):
                 "OSMRO_LOG_LEVEL": config.log_level,
             }
         )
-
+        if config.period_refresh_active:
+            container_builder.add_envs(
+                {
+                    "OSMRO_PERIOD_REFRESH_ACTIVE": config.period_refresh_active,
+                }
+            )
         if config.enable_ng_ro:
             # Add secrets to the pod
             mongodb_secret_name = f"{self.app.name}-mongodb-secret"
@@ -286,8 +299,8 @@ class RoCharm(CharmedOsmBase):
             container_builder.add_envs(
                 {
                     "OSMRO_MESSAGE_DRIVER": "kafka",
-                    "OSMRO_MESSAGE_HOST": self.kafka_client.host,
-                    "OSMRO_MESSAGE_PORT": self.kafka_client.port,
+                    "OSMRO_MESSAGE_HOST": self.kafka.host,
+                    "OSMRO_MESSAGE_PORT": self.kafka.port,
                     # MongoDB configuration
                     "OSMRO_DATABASE_DRIVER": "mongo",
                 }
@@ -350,8 +363,6 @@ VSCODE_WORKSPACE = {
         {"path": "/usr/lib/python3/dist-packages/osm_rovim_aws"},
         {"path": "/usr/lib/python3/dist-packages/osm_rovim_azure"},
         {"path": "/usr/lib/python3/dist-packages/osm_rovim_gcp"},
-        {"path": "/usr/lib/python3/dist-packages/osm_rovim_fos"},
-        {"path": "/usr/lib/python3/dist-packages/osm_rovim_opennebula"},
         {"path": "/usr/lib/python3/dist-packages/osm_rovim_openstack"},
         {"path": "/usr/lib/python3/dist-packages/osm_rovim_openvim"},
         {"path": "/usr/lib/python3/dist-packages/osm_rovim_vmware"},
@@ -432,14 +443,6 @@ def _get_ro_host_paths(ro_host_path: str) -> Dict:
                 "hostpath": f"{ro_host_path}/RO-VIM-gcp",
                 "container-path": "/usr/lib/python3/dist-packages/osm_rovim_gcp",
             },
-            "RO-VIM-fos": {
-                "hostpath": f"{ro_host_path}/RO-VIM-fos",
-                "container-path": "/usr/lib/python3/dist-packages/osm_rovim_fos",
-            },
-            "RO-VIM-opennebula": {
-                "hostpath": f"{ro_host_path}/RO-VIM-opennebula",
-                "container-path": "/usr/lib/python3/dist-packages/osm_rovim_opennebula",
-            },
             "RO-VIM-openstack": {
                 "hostpath": f"{ro_host_path}/RO-VIM-openstack",
                 "container-path": "/usr/lib/python3/dist-packages/osm_rovim_openstack",