- "name": "port",
- "containerPort": config["port"],
- "protocol": "TCP",
- },
- ]
-
- config_spec = {
- "OSMPLA_MESSAGE_DRIVER": "kafka",
- "OSMPLA_MESSAGE_HOST": self.state.kafka_host,
- "OSMPLA_MESSAGE_PORT": self.state.kafka_port,
- "OSMPLA_DATABASE_DRIVER": "mongo",
- "OSMPLA_DATABASE_URI": self.state.mongodb_uri,
- "OSMPLA_GLOBAL_LOG_LEVEL": config["log_level"],
- "OSMPLA_DATABASE_COMMONKEY": config["database_common_key"],
- }
-
- spec = {
- "version": 2,
- "containers": [
- {
- "name": self.framework.model.app.name,
- "imageDetails": {
- "imagePath": config["image"],
- "username": config["image_username"],
- "password": config["image_password"],
- },
- "ports": ports,
- "config": config_spec,
- }
- ],
- }
-
- return spec
-
- def on_config_changed(self, event):
- """Handle changes in configuration"""
- self._apply_spec()
-
- def on_start(self, event):
- """Called when the charm is being installed"""
- self._apply_spec()
-
- def on_upgrade_charm(self, event):
- """Upgrade the charm."""
- unit = self.model.unit
- unit.status = MaintenanceStatus("Upgrading charm")
- self._apply_spec()
-
- def on_kafka_relation_changed(self, event):
- kafka_host = event.relation.data[event.unit].get("host")
- kafka_port = event.relation.data[event.unit].get("port")
- if kafka_host and self.state.kafka_host != kafka_host:
- self.state.kafka_host = kafka_host
- if kafka_port and self.state.kafka_port != kafka_port:
- self.state.kafka_port = kafka_port
- self._apply_spec()
-
- def on_mongo_relation_changed(self, event):
- mongodb_uri = event.relation.data[event.unit].get("connection_string")
- if mongodb_uri and self.state.mongodb_uri != mongodb_uri:
- self.state.mongodb_uri = mongodb_uri
- self._apply_spec()
+ # General configuration
+ "ALLOW_ANONYMOUS_LOGIN": "yes",
+ "OSMPLA_GLOBAL_LOG_LEVEL": config.log_level,
+ # Kafka configuration
+ "OSMPLA_MESSAGE_DRIVER": "kafka",
+ "OSMPLA_MESSAGE_HOST": self.kafka_client.host,
+ "OSMPLA_MESSAGE_PORT": self.kafka_client.port,
+ # Database configuration
+ "OSMPLA_DATABASE_DRIVER": "mongo",
+ "OSMPLA_DATABASE_URI": config.mongodb_uri
+ or self.mongodb_client.connection_string,
+ "OSMPLA_DATABASE_COMMONKEY": config.database_commonkey,
+ }
+ )
+
+ container = container_builder.build()
+
+ # Add container to pod spec
+ pod_spec_builder.add_container(container)
+
+ return pod_spec_builder.build()