MySQL数据库关系,用于Juju操作框架Charm
项目描述
Juju操作框架Charm接口,用于MySQL和MariaDB关系
要在您的Juju操作框架 charm中使用此接口,请指导charmcraft将其嵌入到您构建的操作框架charm中,通过将ops-lib-mysql添加到您的requirements.txt
文件中:
ops
ops-lib-mysql
您的charm需要在它的metadata.yaml
文件中声明它对接口的使用
requires:
db:
interface: mysql
limit: 1 # Most charms only handle a single MySQL Application.
您的charm需要启动它并处理事件
from opslib.mysql import MySQLClient, MySQLRelationEvent
class MyCharm(ops.charm.CharmBase):
_state = ops.framework.StoredState()
def __init__(self, *args):
super().__init__(*args)
self._state.set_default(
db_available=False, db_conn_str=None, db_host=None, db_port=None, db_name=None,
db_user=None, db_password=None, db_root_password=None,
)
self.db = MySQLClient(self, 'db') # 'db' relation in metadata.yaml
self.framework.observe(self.db.on.database_changed, self._on_database_changed)
def _on_database_changed(self, event: MySQLRelationEvent):
self._state.db_available = event.is_available # Boolean flag
self._state.db_conn_str = event.connection_string # host={host} port={port} ...
self._state.db_host = event.host
self._state.db_port = event.port
self._state.db_name = event.database
self._state.db_user = event.user
self._state.db_password = event.password
self._state.db_root_password = event.root_password