X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Fcharm%2Fro%2Fsrc%2Fcharm.py;h=028dc0a4f0c1afd6cd7758fa2c88952fa35cacab;hb=83aed2493a2065cea2e8f25f20728c4292e7ee9e;hp=099c55921368def3e1be0e20aa17d3a4c929c065;hpb=cafe31e388357499765ddc3360b865800b612d7a;p=osm%2Fdevops.git diff --git a/installers/charm/ro/src/charm.py b/installers/charm/ro/src/charm.py index 099c5592..028dc0a4 100755 --- a/installers/charm/ro/src/charm.py +++ b/installers/charm/ro/src/charm.py @@ -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",