From 96d0e9175035f048760f31cd3344b565e9620fd9 Mon Sep 17 00:00:00 2001 From: barco Date: Thu, 1 Feb 2024 12:13:59 +0100 Subject: [PATCH 1/2] chore: pin dependencies --- requirements.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/requirements.txt b/requirements.txt index 95ba29e..d8e90a0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ -ops >= 2.3.0 -requests >= 2.25.1 -jsonschema >= 3.2.0 +ops == 2.10.0 +requests == 2.31.0 +jsonschema==4.21.1 cryptography >= 3.4.8 -lightkube -lightkube-models +lightkube===0.15.0 +lightkube-models==1.29.0.6 pydantic<2.0 From addc0eac1c5df09874ef090cc5a497ef3d6cfbcf Mon Sep 17 00:00:00 2001 From: barco Date: Thu, 1 Feb 2024 12:20:32 +0100 Subject: [PATCH 2/2] refactor: moved log file to `/var/log/openfga` folder, adjusted test --- src/charm.py | 11 ++++++++--- src/constants.py | 4 +++- tests/unit/test_charm.py | 4 ++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/charm.py b/src/charm.py index cf36af1..2d55f36 100755 --- a/src/charm.py +++ b/src/charm.py @@ -59,7 +59,8 @@ GRAFANA_RELATION_NAME, GRPC_INGRESS_RELATION_NAME, HTTP_INGRESS_RELATION_NAME, - LOG_FILE, + LOG_FILE_PATH, + LOG_FOLDER, LOG_PROXY_RELATION_NAME, METRIC_RELATION_NAME, OPENFGA_METRICS_HTTP_PORT, @@ -110,7 +111,7 @@ def __init__(self, *args: Any) -> None: # Loki log-proxy relation self.log_proxy = LogProxyConsumer( self, - log_files=[LOG_FILE], + log_files=[LOG_FILE_PATH], relation_name=LOG_PROXY_RELATION_NAME, container_name=WORKLOAD_CONTAINER, ) @@ -277,7 +278,7 @@ def _pebble_layer(self) -> Layer: SERVICE_NAME: { "override": "merge", "summary": "OpenFGA", - "command": f"sh -c 'openfga run --log-format json --log-level {self._log_level} 2>&1 | tee -a {LOG_FILE}'", + "command": f"sh -c 'openfga run --log-format json --log-level {self._log_level} 2>&1 | tee -a {LOG_FILE_PATH}'", "startup": "disabled", "environment": env_vars, } @@ -355,6 +356,10 @@ def _update_workload(self, event: HookEvent) -> None: # if openfga relation exists, make sure the address is updated self.openfga_relation.update_server_info(http_api_url=self.http_ingress.url) + if not self._container.isdir(LOG_FOLDER): + self._container.make_dir(path=LOG_FOLDER, make_parents=True) + logger.info(f"Created directory {LOG_FOLDER}") + self._container.add_layer("openfga", self._pebble_layer, combine=True) if not self._ready(): logger.info("workload container not ready - deferring") diff --git a/src/constants.py b/src/constants.py index 9173f22..a2e785b 100644 --- a/src/constants.py +++ b/src/constants.py @@ -2,6 +2,7 @@ # See LICENSE file for licensing details. """Constants.""" +import os WORKLOAD_CONTAINER = "openfga" SERVICE_NAME = "openfga" @@ -11,7 +12,8 @@ "OPENFGA_AUTHN_PRESHARED_KEYS", ] -LOG_FILE = "/openfga-k8s.log" +LOG_FOLDER = "/var/log/openfga" +LOG_FILE_PATH = os.path.join(LOG_FOLDER, "openfga-k8s.log") OPENFGA_SERVER_HTTP_PORT = 8080 OPENFGA_METRICS_HTTP_PORT = 2112 diff --git a/tests/unit/test_charm.py b/tests/unit/test_charm.py index d8a3fc7..4381e0d 100644 --- a/tests/unit/test_charm.py +++ b/tests/unit/test_charm.py @@ -11,7 +11,7 @@ logger = logging.getLogger(__name__) -LOG_FILE = "/openfga-k8s.log" +LOG_FILE_PATH = "/var/log/openfga/openfga-k8s.log" DB_USERNAME = "test-username" DB_PASSWORD = "test-password" DB_ENDPOINT = "postgresql-k8s-primary.namespace.svc.cluster.local:5432" @@ -74,7 +74,7 @@ def test_on_config_changed( "override": "merge", "startup": "disabled", "summary": "OpenFGA", - "command": f"sh -c 'openfga run --log-format json --log-level debug 2>&1 | tee -a {LOG_FILE}'", + "command": f"sh -c 'openfga run --log-format json --log-level debug 2>&1 | tee -a {LOG_FILE_PATH}'", "environment": { "OPENFGA_AUTHN_METHOD": "preshared", "OPENFGA_AUTHN_PRESHARED_KEYS": mocked_token_urlsafe.return_value,