Adding release notes and enabling import order check 20/11720/12
authoraticig <gulsum.atici@canonical.com>
Fri, 4 Mar 2022 16:35:45 +0000 (19:35 +0300)
committeraticig <gulsum.atici@canonical.com>
Fri, 22 Apr 2022 15:13:44 +0000 (18:13 +0300)
Enabling Flake8 library import order check,
adding release_notes, enabling stage-test failing by tox results.

Change-Id: I490b4cb3fe5904f54d84f0ce9b41fe91ec8b4f5d
Signed-off-by: aticig <gulsum.atici@canonical.com>
26 files changed:
devops-stages/stage-test.sh
osm_common/dbbase.py
osm_common/dbmemory.py
osm_common/dbmongo.py
osm_common/fsbase.py
osm_common/fslocal.py
osm_common/fsmongo.py
osm_common/msgbase.py
osm_common/msgkafka.py
osm_common/msglocal.py
osm_common/sol004_package.py
osm_common/sol007_package.py
osm_common/sol_package.py
osm_common/tests/packages/invalid_package_vnf/Scripts/charms/simple/src/charm.py
osm_common/tests/packages/native_charm_with_metadata_dir_vnf/Scripts/charms/simple/src/charm.py
osm_common/tests/packages/native_charm_without_metadata_dir_vnf/Scripts/charms/simple/src/charm.py
osm_common/tests/test_dbbase.py
osm_common/tests/test_dbmemory.py
osm_common/tests/test_fsbase.py
osm_common/tests/test_fslocal.py
osm_common/tests/test_fsmongo.py
osm_common/tests/test_msgbase.py
osm_common/tests/test_msglocal.py
releasenotes/notes/cleanup_release_notes-2eaaface039a3179.yaml [new file with mode: 0644]
setup.py
tox.ini

index e5a8e85..8c684dd 100755 (executable)
 # implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
-OUTPUT=$(TOX_PARALLEL_NO_SPINNER=1 tox --parallel=auto)
-printf "$OUTPUT"
+set -e
+echo Launching tox
+tox --parallel=auto
+echo "Checking the presence of release notes ..."
+nb_rn=$(git diff --diff-filter=A --name-only HEAD~1 |grep "releasenotes\/notes" |wc -l)
+if [ "${nb_rn}" -lt 1 ]; then
+    echo "The commit needs release notes"
+    echo "Run the following command to generate release notes: tox -e release_notes '<release_note_title>'"
+    echo "Please read README.md for more details"
+    exit 1
+elif [ "${nb_rn}" -gt 1 ]; then
+    echo "Only one release notes file should be added in a commit"
+    exit 1
+fi
+echo "OK. Release notes present in commit"
index 74378d0..4021805 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import yaml
+from base64 import b64decode, b64encode
+from copy import deepcopy
+from http import HTTPStatus
 import logging
 import re
-from http import HTTPStatus
-from copy import deepcopy
+from threading import Lock
+
 from Crypto.Cipher import AES
-from base64 import b64decode, b64encode
 from osm_common.common_utils import FakeLock
-from threading import Lock
+import yaml
 
 __author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
 
index d089575..9f8c571 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import logging
-from osm_common.dbbase import DbException, DbBase
-from osm_common.dbmongo import deep_update
+from copy import deepcopy
 from http import HTTPStatus
+import logging
 from uuid import uuid4
-from copy import deepcopy
+
+from osm_common.dbbase import DbBase, DbException
+from osm_common.dbmongo import deep_update
+
 
 __author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
 
index d8b373a..8561e96 100644 (file)
 # limitations under the License.
 
 
-import logging
-from pymongo import MongoClient, errors
-from osm_common.dbbase import DbException, DbBase
-from http import HTTPStatus
-from time import time, sleep
-from copy import deepcopy
 from base64 import b64decode
+from copy import deepcopy
+from http import HTTPStatus
+import logging
+from time import sleep, time
 from uuid import uuid4
 
+from osm_common.dbbase import DbBase, DbException
+from pymongo import errors, MongoClient
+
 __author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
 
 # TODO consider use this decorator for database access retries
index 219dbe1..a03fb32 100644 (file)
 # limitations under the License.
 
 
-import logging
 from http import HTTPStatus
-from osm_common.common_utils import FakeLock
+import logging
 from threading import Lock
 
+from osm_common.common_utils import FakeLock
+
+
 __author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
 
 
index ae22c6a..5bae0e9 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+from http import HTTPStatus
+import logging
 import os
+from shutil import rmtree
 import tarfile
 import zipfile
-import logging
 
-# import tarfile
-from http import HTTPStatus
-from shutil import rmtree
 from osm_common.fsbase import FsBase, FsException
 
 __author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
index d923842..1ce5909 100644 (file)
 # For those usages not covered by the Apache License, Version 2.0 please
 # contact: eduardo.sousa@canonical.com
 ##
-
+import datetime
 import errno
 from http import HTTPStatus
 from io import BytesIO, StringIO
 import logging
 import os
-import datetime
 import tarfile
 import zipfile
 
-from gridfs import GridFSBucket, errors
+from gridfs import errors, GridFSBucket
 from osm_common.fsbase import FsBase, FsException
 from pymongo import MongoClient
 
index 49adcb8..80c5be5 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import logging
 from http import HTTPStatus
-from osm_common.common_utils import FakeLock
+import logging
 from threading import Lock
 
+from osm_common.common_utils import FakeLock
+
 __author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
 
 
index 5caa5b1..5487093 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import logging
 import asyncio
-import yaml
+import logging
+
 from aiokafka import AIOKafkaConsumer
 from aiokafka import AIOKafkaProducer
 from aiokafka.errors import KafkaError
 from osm_common.msgbase import MsgBase, MsgException
+import yaml
 
 __author__ = (
     "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>, "
index c10ff17..2f90307 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import asyncio
+from http import HTTPStatus
 import logging
 import os
-import yaml
-import asyncio
-from osm_common.msgbase import MsgBase, MsgException
 from time import sleep
-from http import HTTPStatus
 
-__author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
+from osm_common.msgbase import MsgBase, MsgException
+import yaml
 
+__author__ = "Alfonso Tierno <alfonso.tiernosepulveda@telefonica.com>"
 """
 This emulated kafka bus by just using a shared file system. Useful for testing or devops.
 One file is used per topic. Only one producer and one consumer is allowed per topic. Both consumer and producer
index 813e52d..8a3cb95 100644 (file)
@@ -55,9 +55,11 @@ native_charm_vnf/                 native_charm_vnf/
                 └── charm.py
 """
 
-import yaml
 import datetime
 import os
+
+import yaml
+
 from .sol_package import SOLPackage
 
 
index 4add8a9..ca14ce8 100644 (file)
@@ -55,9 +55,11 @@ native_charm_vnf/                 native_charm_vnf/
                 └── charm.py
 """
 
-import yaml
 import datetime
 import os
+
+import yaml
+
 from .sol_package import SOLPackage
 
 
index e336cd5..8af52b9 100644 (file)
 # For those usages not covered by the Apache License, Version 2.0 please
 # contact: fbravo@whitestack.com or agarcia@whitestack.com
 ##
-
+import hashlib
 import os
+
 import yaml
-import hashlib
 
 
 class SOLPackageException(Exception):
index 117350e..eabf5e0 100644 (file)
 ##
 
 import http
-import pytest
+from http import HTTPStatus
+from os import urandom
 import unittest
+
 from osm_common.dbbase import DbBase, DbException, deep_update
-from os import urandom
-from http import HTTPStatus
+import pytest
 
 
 def exception_message(message):
@@ -124,10 +125,6 @@ class TestEncryption(unittest.TestCase):
         TEST = (
             ("plain text 1 ! ", None),
             ("plain text 2 with salt ! ", "1afd5d1a-4a7e-4d9c-8c65-251290183106"),
-            ("plain text 3 with usalt ! ", u"1afd5d1a-4a7e-4d9c-8c65-251290183106"),
-            (u"plain unicode 4 ! ", None),
-            (u"plain unicode 5 with salt ! ", "1a000d1a-4a7e-4d9c-8c65-251290183106"),
-            (u"plain unicode 6 with usalt ! ", u"1abcdd1a-4a7e-4d9c-8c65-251290183106"),
         )
         for db_base in self.db_bases:
             for value, salt in TEST:
index 3c45527..9a0e749 100644 (file)
 # For those usages not covered by the Apache License, Version 2.0 please
 # contact: esousa@whitestack.com or alfonso.tiernosepulveda@telefonica.com
 ##
-
+from copy import deepcopy
 import http
 import logging
-import pytest
 import unittest
-from unittest.mock import Mock
+from unittest.mock import MagicMock, Mock
 
-from unittest.mock import MagicMock
 from osm_common.dbbase import DbException
 from osm_common.dbmemory import DbMemory
-from copy import deepcopy
+import pytest
 
 __author__ = "Eduardo Sousa <eduardosousa@av.it.pt>"
 
index 43349ad..cb5c560 100644 (file)
@@ -18,9 +18,9 @@
 ##
 
 import http
-import pytest
 
 from osm_common.fsbase import FsBase, FsException
+import pytest
 
 
 def exception_message(message):
index 6f52984..6336211 100644 (file)
 # contact: esousa@whitestack.com or alfonso.tiernosepulveda@telefonica.com
 ##
 
+import http
 import io
 import logging
-import http
 import os
-import pytest
+import shutil
 import tarfile
 import tempfile
 import uuid
-import shutil
 
 from osm_common.fsbase import FsException
 from osm_common.fslocal import FsLocal
+import pytest
 
 __author__ = "Eduardo Sousa <eduardosousa@av.it.pt>"
 
index da01ff3..01a8ef2 100644 (file)
 # contact: eduardo.sousa@canonical.com
 ##
 
+from io import BytesIO
 import logging
-import pytest
-import tempfile
-import tarfile
 import os
+from pathlib import Path
 import subprocess
-
-from pymongo import MongoClient
-from gridfs import GridFSBucket
-
-from io import BytesIO
-
+import tarfile
+import tempfile
 from unittest.mock import Mock
 
+from gridfs import GridFSBucket
 from osm_common.fsbase import FsException
 from osm_common.fsmongo import FsMongo
-from pathlib import Path
+from pymongo import MongoClient
+import pytest
 
 __author__ = "Eduardo Sousa <eduardo.sousa@canonical.com>"
 
index 665968e..d5092b1 100644 (file)
@@ -18,9 +18,9 @@
 ##
 
 import http
-import pytest
 
 from osm_common.msgbase import MsgBase, MsgException
+import pytest
 
 
 def exception_message(message):
index 9548885..fb74586 100644 (file)
 
 import http
 import logging
-import pytest
-import tempfile
-import shutil
-import uuid
 import os
-import yaml
-import time
+import shutil
+import tempfile
 import threading
-
+import time
 from unittest.mock import MagicMock
+import uuid
+
 from osm_common.msgbase import MsgException
 from osm_common.msglocal import MsgLocal
+import pytest
+import yaml
 
 __author__ = "Eduardo Sousa <eduardosousa@av.it.pt>"
 
diff --git a/releasenotes/notes/cleanup_release_notes-2eaaface039a3179.yaml b/releasenotes/notes/cleanup_release_notes-2eaaface039a3179.yaml
new file mode 100644 (file)
index 0000000..4163b1f
--- /dev/null
@@ -0,0 +1,22 @@
+#######################################################################################
+# Copyright ETSI Contributors and Others.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#######################################################################################
+---
+other:
+  - |
+    Flake8 import order check is added in tox.ini, library import order is arranged in all files.
+    Release note creation is added in tox.ini, stage-test failing by tox results is enabled, release note
+    checking script is added.
\ No newline at end of file
index cb19584..390ca7d 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -18,6 +18,7 @@
 
 
 import os
+
 from setuptools import setup
 
 here = os.path.abspath(os.path.dirname(__file__))
diff --git a/tox.ini b/tox.ini
index ce0ffcb..e763ca2 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -52,7 +52,9 @@ whitelist_externals = sh
 
 #######################################################################################
 [testenv:flake8]
-deps = flake8
+deps =
+        flake8
+        flake8-import-order
 commands =
         flake8 osm_common/ setup.py
 
@@ -103,6 +105,15 @@ commands =
         sh -c 'rm osm_common/requirements.txt'
 whitelist_externals = sh
 
+#######################################################################################
+[testenv:release_notes]
+deps = reno
+skip_install = true
+whitelist_externals = bash
+commands =
+        reno new {posargs:new_feature}
+        bash -c "sed -i -e '1 e head -16 tox.ini' releasenotes/notes/{posargs:new_feature}*.yaml"
+
 #######################################################################################
 [flake8]
 ignore =
@@ -121,3 +132,4 @@ exclude =
 max-line-length = 120
 show-source = True
 builtins = _
+import-order-style = google