X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=installers%2Fcharm%2Fnbi%2Fsrc%2Fcharm.py;h=f2b2ecf77da1be3a1b28273b03a50cb930e3b2ba;hb=7498c1dfab5ba2a01a532ab8069abbceae5ccd08;hp=7ef9d59eb260c90cf1eefc22ead59bff68763b3f;hpb=9b6ad36b93538bbe2621b8c30d899862d8840e60;p=osm%2Fdevops.git diff --git a/installers/charm/nbi/src/charm.py b/installers/charm/nbi/src/charm.py index 7ef9d59e..f2b2ecf7 100755 --- a/installers/charm/nbi/src/charm.py +++ b/installers/charm/nbi/src/charm.py @@ -22,7 +22,6 @@ import logging from typing import Any, Dict, NoReturn -from pydantic import ValidationError from ops.charm import CharmBase, CharmEvents from ops.framework import EventBase, EventSource, StoredState @@ -32,7 +31,7 @@ from oci_image import OCIImageResource, OCIImageResourceError from pod_spec import make_pod_spec -LOGGER = logging.getLogger(__name__) +logger = logging.getLogger(__name__) NBI_PORT = 9999 @@ -130,8 +129,10 @@ class NbiCharm(CharmBase): Args: event (EventBase): Kafka relation event. """ - message_host = event.relation.data[event.unit].get("host") - message_port = event.relation.data[event.unit].get("port") + data_loc = event.unit if event.unit else event.app + + message_host = event.relation.data[data_loc].get("host") + message_port = event.relation.data[data_loc].get("port") if ( message_host @@ -142,7 +143,7 @@ class NbiCharm(CharmBase): ) ): self.state.message_host = message_host - self.state.message_port = message_port + self.state.message_port = int(message_port) self.on.configure_pod.emit() def _on_kafka_relation_departed(self, event: EventBase) -> NoReturn: @@ -161,7 +162,9 @@ class NbiCharm(CharmBase): Args: event (EventBase): DB relation event. """ - database_uri = event.relation.data[event.unit].get("connection_string") + data_loc = event.unit if event.unit else event.app + + database_uri = event.relation.data[data_loc].get("connection_string") if database_uri and self.state.database_uri != database_uri: self.state.database_uri = database_uri @@ -182,17 +185,19 @@ class NbiCharm(CharmBase): Args: event (EventBase): Keystone relation event. """ - keystone_host = event.relation.data[event.unit].get("host") - keystone_port = event.relation.data[event.unit].get("port") - keystone_user_domain_name = event.relation.data[event.unit].get( + data_loc = event.unit if event.unit else event.app + + keystone_host = event.relation.data[data_loc].get("host") + keystone_port = event.relation.data[data_loc].get("port") + keystone_user_domain_name = event.relation.data[data_loc].get( "user_domain_name" ) - keystone_project_domain_name = event.relation.data[event.unit].get( + keystone_project_domain_name = event.relation.data[data_loc].get( "project_domain_name" ) - keystone_username = event.relation.data[event.unit].get("username") - keystone_password = event.relation.data[event.unit].get("password") - keystone_service = event.relation.data[event.unit].get("service") + keystone_username = event.relation.data[data_loc].get("username") + keystone_password = event.relation.data[data_loc].get("password") + keystone_service = event.relation.data[data_loc].get("service") if ( keystone_host @@ -214,7 +219,7 @@ class NbiCharm(CharmBase): ) ): self.state.keystone_host = keystone_host - self.state.keystone_port = keystone_port + self.state.keystone_port = int(keystone_port) self.state.keystone_user_domain_name = keystone_user_domain_name self.state.keystone_project_domain_name = keystone_project_domain_name self.state.keystone_username = keystone_username @@ -243,8 +248,10 @@ class NbiCharm(CharmBase): Args: event (EventBase): Prometheus relation event. """ - prometheus_host = event.relation.data[event.unit].get("hostname") - prometheus_port = event.relation.data[event.unit].get("port") + data_loc = event.unit if event.unit else event.app + + prometheus_host = event.relation.data[data_loc].get("hostname") + prometheus_port = event.relation.data[data_loc].get("port") if ( prometheus_host @@ -255,7 +262,7 @@ class NbiCharm(CharmBase): ) ): self.state.prometheus_host = prometheus_host - self.state.prometheus_port = prometheus_port + self.state.prometheus_port = int(prometheus_port) self.on.configure_pod.emit() def _on_prometheus_relation_departed(self, event: EventBase) -> NoReturn: @@ -274,13 +281,12 @@ class NbiCharm(CharmBase): Args: event (EventBase): NBI relation event. """ - if self.unit.is_leader(): - rel_data = { - "host": self.model.app.name, - "port": str(NBI_PORT), - } - for k, v in rel_data.items(): - event.relation.data[self.model.app][k] = v + rel_data = { + "host": self.model.app.name, + "port": str(NBI_PORT), + } + for k, v in rel_data.items(): + event.relation.data[self.unit][k] = v def _missing_relations(self) -> str: """Checks if there missing relations. @@ -366,8 +372,8 @@ class NbiCharm(CharmBase): self.model.app.name, self.port, ) - except ValidationError as exc: - LOGGER.exception("Config/Relation data validation error") + except ValueError as exc: + logger.exception("Config/Relation data validation error") self.unit.status = BlockedStatus(str(exc)) return