Update logger config 69/7069/2
authorBin Yang <bin.yang@windriver.com>
Tue, 16 Nov 2021 03:01:57 +0000 (11:01 +0800)
committerBin Yang <bin.yang@windriver.com>
Tue, 16 Nov 2021 07:15:17 +0000 (15:15 +0800)
Signed-off-by: Bin Yang <bin.yang@windriver.com>
Change-Id: Ic8a8efe08a0308a753afb785898fcc225121b4ad

25 files changed:
Dockerfile
Dockerfile.localtest
configs/log.yaml [new file with mode: 0644]
docker-compose.yml
o2common/helper/__init__.py [new file with mode: 0644]
o2common/helper/o2logging.py [new file with mode: 0644]
o2ims/adapter/clients/ocloud_sa_client.py
o2ims/adapter/clients/orm_stx.py
o2ims/adapter/orm.py
o2ims/adapter/redis_eventpublisher.py
o2ims/config.py
o2ims/domain/stx_object.py
o2ims/entrypoints/redis_eventconsumer.py
o2ims/entrypoints/resource_watcher.py
o2ims/service/messagebus.py
o2ims/service/watcher/base.py
o2ims/service/watcher/ocloud_watcher.py
o2ims/service/watcher/pserver_cpu_watcher.py
o2ims/service/watcher/pserver_watcher.py
o2ims/service/watcher/resource_watcher.py
o2ims/service/watcher/resourcepool_watcher.py
o2ims/service/watcher/worker.py
requirements.txt
tests/o2ims-redis-entry.sh [moved from o2ims/entrypoints/o2ims-redis-entry.sh with 67% similarity]
tests/o2ims-watcher-entry.sh [moved from o2ims/entrypoints/o2ims-watcher-entry.sh with 67% similarity]

index 75e2363..a4ca721 100644 (file)
@@ -35,6 +35,8 @@ COPY setup.py /src/
 \r
 RUN pip install -e /src\r
 \r
+COPY configs/ /etc/o2/\r
+\r
 COPY tests/ /tests/\r
 \r
 RUN apt-get install -y procps vim\r
index c61c1db..16d399d 100644 (file)
@@ -28,6 +28,8 @@ COPY o2dms/ /src/o2dms/
 COPY o2common/ /src/o2common/\r
 COPY setup.py /src/\r
 \r
+COPY configs/ /etc/o2/\r
+\r
 # RUN pip install -e /src\r
 \r
 COPY tests/ /tests/\r
diff --git a/configs/log.yaml b/configs/log.yaml
new file mode 100644 (file)
index 0000000..5eaf85b
--- /dev/null
@@ -0,0 +1,49 @@
+# Copyright (C) 2021 Wind River Systems, Inc.\r
+#\r
+#  Licensed under the Apache License, Version 2.0 (the "License");\r
+#  you may not use this file except in compliance with the License.\r
+#  You may obtain a copy of the License at\r
+#\r
+#      http://www.apache.org/licenses/LICENSE-2.0\r
+#\r
+#  Unless required by applicable law or agreed to in writing, software\r
+#  distributed under the License is distributed on an "AS IS" BASIS,\r
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+#  See the License for the specific language governing permissions and\r
+#  limitations under the License.\r
+\r
+version: 1\r
+disable_existing_loggers: False\r
+\r
+loggers:\r
+    root:\r
+      handlers: [console_handler, file_handler]\r
+      level: "WARNING"\r
+      propagate: False\r
+    o2common:\r
+      handlers: [console_handler, file_handler]\r
+      level: "WARNING"\r
+      propagate: False\r
+    o2ims:\r
+      handlers: [console_handler, file_handler]\r
+      level: "WARNING"\r
+      propagate: False\r
+    o2dms:\r
+      handlers: [console_handler, file_handler]\r
+      level: "WARNING"\r
+      propagate: False\r
+handlers:\r
+    console_handler:\r
+      level: "DEBUG"\r
+      class: "logging.StreamHandler"\r
+      formatter: "standard"\r
+    file_handler:\r
+      level: "DEBUG"\r
+      class: "logging.handlers.RotatingFileHandler"\r
+      filename: "/var/log/o2.log"\r
+      formatter: "standard"\r
+      maxBytes: 52428800\r
+      backupCount: 10\r
+formatters:\r
+    standard:\r
+      format: "%(asctime)s:[%(name)s]:[%(filename)s]-[%(lineno)d] [%(levelname)s]:%(message)s"\r
index efb52cf..02190b2 100644 (file)
@@ -18,14 +18,16 @@ services:
       - OS_AUTH_URL=${OS_AUTH_URL}
       - OS_USERNAME=${OS_USERNAME}
       - OS_PASSWORD=${OS_PASSWORD}
+      - LOGGING_CONFIG_LEVEL=DEBUG
     volumes:
+      - ./configs:/configs
       - ./o2ims:/o2ims
       - ./o2dms:/o2dms
       - ./o2common:/o2common
       - ./tests:/tests
     entrypoint:
       - /bin/sh
-      - /o2ims/entrypoints/o2ims-redis-entry.sh
+      - /tests/o2ims-redis-entry.sh
 
   api:
     image: o2imsdms-image
@@ -43,7 +45,9 @@ services:
       - OS_AUTH_URL=${OS_AUTH_URL}
       - OS_USERNAME=${OS_USERNAME}
       - OS_PASSWORD=${OS_PASSWORD}
+      - LOGGING_CONFIG_LEVEL=DEBUG
     volumes:
+      - ./configs:/configs
       - ./o2ims:/o2ims
       - ./o2dms:/o2dms
       - ./o2common:/o2common
@@ -72,14 +76,16 @@ services:
       - OS_AUTH_URL=${OS_AUTH_URL}
       - OS_USERNAME=${OS_USERNAME}
       - OS_PASSWORD=${OS_PASSWORD}
+      - LOGGING_CONFIG_LEVEL=DEBUG
     volumes:
+      - ./configs:/configs
       - ./o2ims:/o2ims
       - ./o2dms:/o2dms
       - ./o2common:/o2common
       - ./tests:/tests
     entrypoint:
       - /bin/sh
-      - /o2ims/entrypoints/o2ims-watcher-entry.sh
+      - /tests/o2ims-watcher-entry.sh
 
   postgres:
     image: postgres:9.6
diff --git a/o2common/helper/__init__.py b/o2common/helper/__init__.py
new file mode 100644 (file)
index 0000000..b514342
--- /dev/null
@@ -0,0 +1,13 @@
+# Copyright (C) 2021 Wind River Systems, Inc.\r
+#\r
+#  Licensed under the Apache License, Version 2.0 (the "License");\r
+#  you may not use this file except in compliance with the License.\r
+#  You may obtain a copy of the License at\r
+#\r
+#      http://www.apache.org/licenses/LICENSE-2.0\r
+#\r
+#  Unless required by applicable law or agreed to in writing, software\r
+#  distributed under the License is distributed on an "AS IS" BASIS,\r
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+#  See the License for the specific language governing permissions and\r
+#  limitations under the License.\r
diff --git a/o2common/helper/o2logging.py b/o2common/helper/o2logging.py
new file mode 100644 (file)
index 0000000..5290f70
--- /dev/null
@@ -0,0 +1,36 @@
+# Copyright (C) 2021 Wind River Systems, Inc.\r
+#\r
+#  Licensed under the Apache License, Version 2.0 (the "License");\r
+#  you may not use this file except in compliance with the License.\r
+#  You may obtain a copy of the License at\r
+#\r
+#      http://www.apache.org/licenses/LICENSE-2.0\r
+#\r
+#  Unless required by applicable law or agreed to in writing, software\r
+#  distributed under the License is distributed on an "AS IS" BASIS,\r
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+#  See the License for the specific language governing permissions and\r
+#  limitations under the License.\r
+\r
+import logging\r
+import logging.config\r
+import logging.handlers\r
+import os\r
+import yaml\r
+\r
+\r
+def get_logger(name=None):\r
+    CONFIG_FILE = os.environ.get(\r
+        "LOGGING_CONFIG_FILE", "/etc/o2/log.yaml")\r
+    if os.path.exists(CONFIG_FILE):\r
+        with open(file=CONFIG_FILE, mode='r', encoding="utf-8") as file:\r
+            config_yaml = yaml.load(stream=file, Loader=yaml.FullLoader)\r
+        logging.config.dictConfig(config=config_yaml)\r
+\r
+    logger = logging.getLogger(name)\r
+\r
+    # override logging level\r
+    LOGGING_CONFIG_LEVEL = os.environ.get("LOGGING_CONFIG_LEVEL", None)\r
+    if LOGGING_CONFIG_LEVEL:\r
+        logger.setLevel(LOGGING_CONFIG_LEVEL)\r
+    return logger\r
index e9a5c5c..0ec88e2 100644 (file)
@@ -24,8 +24,9 @@ from o2ims.domain.resource_type import ResourceTypeEnum
 \r
 # from dcmanagerclient.api import client\r
 from cgtsclient.client import get_client\r
-import logging\r
-logger = logging.getLogger(__name__)\r
+\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 \r
 class StxSaOcloudClient(BaseClient):\r
index b8c1523..c2d0e6f 100644 (file)
@@ -13,8 +13,6 @@
 #  limitations under the License.\r
 \r
 # from datetime import datetime\r
-import logging\r
-\r
 from sqlalchemy import (\r
     Table,\r
     MetaData,\r
@@ -39,7 +37,8 @@ from o2ims.service.unit_of_work import AbstractUnitOfWork
 from o2ims.adapter.unit_of_work import SqlAlchemyUnitOfWork\r
 from o2ims.domain.resource_type import ResourceTypeEnum\r
 \r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 metadata = MetaData()\r
 \r
index 3bae4e8..9cbf41a 100644 (file)
@@ -12,8 +12,6 @@
 #  See the License for the specific language governing permissions and\r
 #  limitations under the License.\r
 \r
-import logging\r
-\r
 from sqlalchemy import (\r
     Table,\r
     MetaData,\r
@@ -30,7 +28,8 @@ from sqlalchemy.orm import mapper, relationship
 \r
 from o2ims.domain import ocloud as ocloudModel\r
 \r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 metadata = MetaData()\r
 \r
index 835c72c..4df167e 100644 (file)
 #  limitations under the License.
 
 import json
-import logging
 from dataclasses import asdict
 import redis
 
 from o2ims import config
 from o2ims.domain import events
 
-logger = logging.getLogger(__name__)
+from o2common.helper import o2logging
+logger = o2logging.get_logger(__name__)
+
 
 r = redis.Redis(**config.get_redis_host_and_port())
 
 
 def publish(channel, event: events.Event):
-    logging.info("publishing: channel=%s, event=%s", channel, event)
+    logger.info("publishing: channel=%s, event=%s", channel, event)
     r.publish(channel, json.dumps(asdict(event)))
index e55d00b..7db2d0a 100644 (file)
@@ -14,7 +14,9 @@
 
 import os
 import sys
-import logging
+
+from o2common.helper import o2logging
+logger = o2logging.get_logger(__name__)
 
 
 def get_postgres_uri():
@@ -70,8 +72,8 @@ def get_stx_access_info():
         #     project_domain_id=os.environ['OS_PROJECT_DOMAIN_ID']
         # )
     except KeyError:
-        logging.error('Please source your RC file before execution, '
-                      'e.g.: `source ~/downloads/admin-rc.sh`')
+        logger.error('Please source your RC file before execution, '
+                     'e.g.: `source ~/downloads/admin-rc.sh`')
         sys.exit(1)
 
     os_client_args = {}
index 36ce349..e648755 100644 (file)
@@ -17,8 +17,8 @@ import datetime
 import json\r
 \r
 from o2ims.domain.resource_type import ResourceTypeEnum\r
-import logging\r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 \r
 class MismatchedModel(Exception):\r
index a22b61c..7ca87d2 100644 (file)
 #  limitations under the License.
 
 import json
-import logging
 import redis
 
 from o2ims import bootstrap, config
 from o2ims.domain import commands
 
-logger = logging.getLogger(__name__)
+from o2common.helper import o2logging
+logger = o2logging.get_logger(__name__)
 
 r = redis.Redis(**config.get_redis_host_and_port())
 
index b559959..acde2d2 100644 (file)
@@ -34,8 +34,8 @@ from o2ims import bootstrap
 # from o2ims import config\r
 # import redis\r
 \r
-import logging\r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 # r = redis.Redis(**config.get_redis_host_and_port())\r
 \r
index 0758529..c1970f8 100644 (file)
 
 # pylint: disable=broad-except, attribute-defined-outside-init
 from __future__ import annotations
-import logging
 from typing import Callable, Dict, List, Union, Type, TYPE_CHECKING
 from o2ims.domain import commands, events
 
 if TYPE_CHECKING:
     from . import unit_of_work
 
-logger = logging.getLogger(__name__)
+from o2common.helper import o2logging
+logger = o2logging.get_logger(__name__)
 
 Message = Union[commands.Command, events.Event]
 
index 12b259e..6700eb3 100644 (file)
@@ -16,8 +16,8 @@ from o2ims.service.client.base_client import BaseClient
 from o2ims.domain.stx_object import StxGenericModel\r
 from o2ims.service.unit_of_work import AbstractUnitOfWork\r
 \r
-import logging\r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 \r
 class BaseWatcher(object):\r
index acdc655..6a73f48 100644 (file)
@@ -18,8 +18,8 @@ from o2ims.domain.stx_object import StxGenericModel
 from o2ims.service.unit_of_work import AbstractUnitOfWork\r
 from o2ims.service.watcher.base import BaseWatcher\r
 \r
-import logging\r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 \r
 class InvalidOcloudState(Exception):\r
index e99cdc0..3add20b 100644 (file)
@@ -16,8 +16,8 @@ from o2ims.service.client.base_client import BaseClient
 from o2ims.service.unit_of_work import AbstractUnitOfWork\r
 from o2ims.service.watcher.resource_watcher import ResourceWatcher\r
 \r
-import logging\r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 \r
 class PServerCpuWatcher(ResourceWatcher):\r
index ec21564..4e2f330 100644 (file)
@@ -16,8 +16,8 @@ from o2ims.service.client.base_client import BaseClient
 from o2ims.service.unit_of_work import AbstractUnitOfWork\r
 from o2ims.service.watcher.resource_watcher import ResourceWatcher\r
 \r
-import logging\r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 \r
 class PServerWatcher(ResourceWatcher):\r
index c54318a..a424dfb 100644 (file)
@@ -16,8 +16,8 @@ from o2ims.service.client.base_client import BaseClient
 from o2ims.service.unit_of_work import AbstractUnitOfWork\r
 from o2ims.service.watcher.base import BaseWatcher\r
 \r
-import logging\r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 \r
 class ResourceWatcher(BaseWatcher):\r
index 6caf5fd..6343292 100644 (file)
@@ -16,8 +16,8 @@ from o2ims.service.client.base_client import BaseClient
 from o2ims.service.unit_of_work import AbstractUnitOfWork\r
 from o2ims.service.watcher.base import BaseWatcher\r
 \r
-import logging\r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 \r
 class ResourcePoolWatcher(BaseWatcher):\r
index 9b87ebe..888ecd6 100644 (file)
@@ -16,8 +16,8 @@ import time
 import sched\r
 from o2ims.service.watcher.base import WatcherTree\r
 \r
-import logging\r
-logger = logging.getLogger(__name__)\r
+from o2common.helper import o2logging\r
+logger = o2logging.get_logger(__name__)\r
 \r
 \r
 class PollWorker(object):\r
index 3a14faa..e173bd4 100644 (file)
@@ -3,6 +3,8 @@ sqlalchemy
 redis\r
 psycopg2-binary\r
 cotyledon\r
+PyYAML>=5.4.1\r
+ruamel.yaml>=0.17.1\r
 \r
 Cython>=3.0a1\r
 \r
similarity index 67%
rename from o2ims/entrypoints/o2ims-redis-entry.sh
rename to tests/o2ims-redis-entry.sh
index 41369ae..be148a2 100644 (file)
@@ -3,6 +3,9 @@
 # pip install -e /src
 # python /o2ims/entrypoints/resource_watcher.py
 
+cp -r /configs/* /etc/o2/
+cp -r /o2common/* /src/o2common
 cp -r /o2ims/* /src/o2ims
+cp -r /o2dms/* /src/o2dms
 pip install -e /src
 python /o2ims/entrypoints/redis_eventconsumer.py
similarity index 67%
rename from o2ims/entrypoints/o2ims-watcher-entry.sh
rename to tests/o2ims-watcher-entry.sh
index f942908..1ab193e 100644 (file)
@@ -3,6 +3,9 @@
 # pip install -e /src
 # python /o2ims/entrypoints/resource_watcher.py
 
+cp -r /configs/* /etc/o2/
+cp -r /o2common/* /src/o2common
 cp -r /o2ims/* /src/o2ims
+cp -r /o2dms/* /src/o2dms
 pip install -e /src
 python /o2ims/entrypoints/resource_watcher.py