- 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
- and keystone_port
- and keystone_user_domain_name
- and keystone_project_domain_name
- and keystone_username
- and keystone_password
- and keystone_service
- and (
- self.state.keystone_host != keystone_host
- or self.state.keystone_port != keystone_port
- or self.state.keystone_user_domain_name != keystone_user_domain_name
- or self.state.keystone_project_domain_name
- != keystone_project_domain_name
- or self.state.keystone_username != keystone_username
- or self.state.keystone_password != keystone_password
- or self.state.keystone_service != keystone_service
- )
- ):
- self.state.keystone_host = keystone_host
- self.state.keystone_port = 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
- self.state.keystone_password = keystone_password
- self.state.keystone_service = keystone_service
- self.on.configure_pod.emit()
-
- def _on_keystone_relation_departed(self, event: EventBase) -> NoReturn:
- """Clears data from keystone relation.
-
- Args:
- event (EventBase): Keystone relation event.
- """
- self.state.keystone_host = None
- self.state.keystone_port = None
- self.state.keystone_user_domain_name = None
- self.state.keystone_project_domain_name = None
- self.state.keystone_username = None
- self.state.keystone_password = None
- self.state.keystone_service = None
- self.on.configure_pod.emit()
-
- def _on_prometheus_relation_changed(self, event: EventBase) -> NoReturn:
- """Reads information about the prometheus relation.
-
- Args:
- event (EventBase): Prometheus relation event.
- """
- 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
- and prometheus_port
- and (
- self.state.prometheus_host != prometheus_host
- or self.state.prometheus_port != prometheus_port
- )
- ):
- self.state.prometheus_host = prometheus_host
- self.state.prometheus_port = prometheus_port
- self.on.configure_pod.emit()
-
- def _on_prometheus_relation_departed(self, event: EventBase) -> NoReturn:
- """Clears data from prometheus relation.
-
- Args:
- event (EventBase): Prometheus relation event.
- """
- self.state.prometheus_host = None
- self.state.prometheus_port = None
- self.on.configure_pod.emit()
-
- def _publish_nbi_info(self, event: EventBase) -> NoReturn:
- """Publishes NBI information.
-
- Args:
- event (EventBase): NBI relation event.
- """
- if self.unit.is_leader():
- rel_data = {
- "host": self.model.app.name,
- "port": str(NBI_PORT),
+ container_builder.add_tcpsocket_liveness_probe(
+ PORT,
+ initial_delay_seconds=45,
+ timeout_seconds=10,
+ )
+ container_builder.add_envs(
+ {
+ # General configuration
+ "ALLOW_ANONYMOUS_LOGIN": "yes",
+ "OSMNBI_SERVER_ENABLE_TEST": config.enable_test,
+ "OSMNBI_STATIC_DIR": "/app/osm_nbi/html_public",
+ # Kafka configuration
+ "OSMNBI_MESSAGE_HOST": self.kafka.host,
+ "OSMNBI_MESSAGE_DRIVER": "kafka",
+ "OSMNBI_MESSAGE_PORT": self.kafka.port,
+ # Database configuration
+ "OSMNBI_DATABASE_DRIVER": "mongo",
+ # Storage configuration
+ "OSMNBI_STORAGE_DRIVER": "mongo",
+ "OSMNBI_STORAGE_PATH": "/app/storage",
+ "OSMNBI_STORAGE_COLLECTION": "files",
+ # Prometheus configuration
+ "OSMNBI_PROMETHEUS_HOST": self.prometheus_client.hostname,
+ "OSMNBI_PROMETHEUS_PORT": self.prometheus_client.port,
+ # Log configuration
+ "OSMNBI_LOG_LEVEL": config.log_level,