aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Juszkiewicz <marcin.juszkiewicz+kolla@linaro.org>2022-10-05 17:18:21 +0200
committerMarcin Juszkiewicz <marcin.juszkiewicz+kolla@linaro.org>2022-10-06 13:14:07 +0200
commitaee19bd1c4b45807d7d246b3d06710cca93f137a (patch)
treee2fe5a56f85ca69858bb089b7ba27f4bd162d825
parent8dd52300c0e6bac8eee2f8c842ea2e665547e989 (diff)
downloadkolla-aee19bd1c4b45807d7d246b3d06710cca93f137a.tar.gz
kolla-aee19bd1c4b45807d7d246b3d06710cca93f137a.zip
Move status and log related things to separate file
As part of kolla/image/ refactoring we move status enums/consts into own file. Based on patch by Konstantin Yarovoy <konstantin.yarovoy@tietoevry.com> Change-Id: I940816c7e487f6d5c7abc4446226e2992cf9e63d
-rwxr-xr-xkolla/image/build.py25
-rw-r--r--kolla/image/utils.py35
-rw-r--r--kolla/tests/test_build.py75
3 files changed, 76 insertions, 59 deletions
diff --git a/kolla/image/build.py b/kolla/image/build.py
index a482800e9..ff045bbc6 100755
--- a/kolla/image/build.py
+++ b/kolla/image/build.py
@@ -29,7 +29,6 @@ import threading
import time
import docker
-from enum import Enum
import git
import jinja2
from oslo_config import cfg
@@ -48,33 +47,15 @@ from kolla.common import config as common_config # noqa
from kolla.common import task # noqa
from kolla.common import utils # noqa
from kolla.image.unbuildable import UNBUILDABLE_IMAGES # noqa
+from kolla.image.utils import LOG # noqa
+from kolla.image.utils import Status # noqa
+from kolla.image.utils import STATUS_ERRORS # noqa
from kolla import exception # noqa
from kolla.template import filters as jinja_filters # noqa
from kolla.template import methods as jinja_methods # noqa
from kolla import version # noqa
-class Status(Enum):
- CONNECTION_ERROR = 'connection_error'
- PUSH_ERROR = 'push_error'
- ERROR = 'error'
- PARENT_ERROR = 'parent_error'
- BUILT = 'built'
- BUILDING = 'building'
- UNMATCHED = 'unmatched'
- MATCHED = 'matched'
- UNPROCESSED = 'unprocessed'
- SKIPPED = 'skipped'
- UNBUILDABLE = 'unbuildable'
-
-
-# All error status constants.
-STATUS_ERRORS = (Status.CONNECTION_ERROR, Status.PUSH_ERROR,
- Status.ERROR, Status.PARENT_ERROR)
-
-LOG = utils.make_a_logger()
-
-
class ArchivingError(Exception):
pass
diff --git a/kolla/image/utils.py b/kolla/image/utils.py
new file mode 100644
index 000000000..0097d0549
--- /dev/null
+++ b/kolla/image/utils.py
@@ -0,0 +1,35 @@
+# 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.
+
+from enum import Enum
+from kolla.common import utils # noqa
+
+
+class Status(Enum):
+ CONNECTION_ERROR = 'connection_error'
+ PUSH_ERROR = 'push_error'
+ ERROR = 'error'
+ PARENT_ERROR = 'parent_error'
+ BUILT = 'built'
+ BUILDING = 'building'
+ UNMATCHED = 'unmatched'
+ MATCHED = 'matched'
+ UNPROCESSED = 'unprocessed'
+ SKIPPED = 'skipped'
+ UNBUILDABLE = 'unbuildable'
+
+
+# All error status constants.
+STATUS_ERRORS = (Status.CONNECTION_ERROR, Status.PUSH_ERROR,
+ Status.ERROR, Status.PARENT_ERROR)
+
+LOG = utils.make_a_logger()
diff --git a/kolla/tests/test_build.py b/kolla/tests/test_build.py
index bf9896465..89c406503 100644
--- a/kolla/tests/test_build.py
+++ b/kolla/tests/test_build.py
@@ -18,33 +18,34 @@ from unittest import mock
from kolla.cmd import build as build_cmd
from kolla.image import build
+from kolla.image import utils
from kolla.tests import base
FAKE_IMAGE = build.Image(
'image-base', 'image-base:latest',
'/fake/path', parent_name=None,
- parent=None, status=build.Status.MATCHED)
+ parent=None, status=utils.Status.MATCHED)
FAKE_IMAGE_CHILD = build.Image(
'image-child', 'image-child:latest',
'/fake/path2', parent_name='image-base',
- parent=FAKE_IMAGE, status=build.Status.MATCHED)
+ parent=FAKE_IMAGE, status=utils.Status.MATCHED)
FAKE_IMAGE_CHILD_UNMATCHED = build.Image(
'image-child-unmatched', 'image-child-unmatched:latest',
'/fake/path3', parent_name='image-base',
- parent=FAKE_IMAGE, status=build.Status.UNMATCHED)
+ parent=FAKE_IMAGE, status=utils.Status.UNMATCHED)
FAKE_IMAGE_CHILD_ERROR = build.Image(
'image-child-error', 'image-child-error:latest',
'/fake/path4', parent_name='image-base',
- parent=FAKE_IMAGE, status=build.Status.ERROR)
+ parent=FAKE_IMAGE, status=utils.Status.ERROR)
FAKE_IMAGE_CHILD_BUILT = build.Image(
'image-child-built', 'image-child-built:latest',
'/fake/path5', parent_name='image-base',
- parent=FAKE_IMAGE, status=build.Status.BUILT)
+ parent=FAKE_IMAGE, status=utils.Status.BUILT)
FAKE_IMAGE_GRANDCHILD = build.Image(
'image-grandchild', 'image-grandchild:latest',
'/fake/path6', parent_name='image-child',
- parent=FAKE_IMAGE_CHILD, status=build.Status.MATCHED)
+ parent=FAKE_IMAGE_CHILD, status=utils.Status.MATCHED)
class TasksTest(base.TestCase):
@@ -80,7 +81,7 @@ class TasksTest(base.TestCase):
mock_client().push.assert_called_once_with(
self.image.canonical_name, decode=True, stream=True)
self.assertFalse(pusher.success)
- self.assertEqual(build.Status.PUSH_ERROR, self.image.status)
+ self.assertEqual(utils.Status.PUSH_ERROR, self.image.status)
@mock.patch.dict(os.environ, clear=True)
@mock.patch('docker.APIClient')
@@ -93,14 +94,14 @@ class TasksTest(base.TestCase):
mock_client().push.assert_called_once_with(
self.image.canonical_name, decode=True, stream=True)
self.assertFalse(pusher.success)
- self.assertEqual(build.Status.PUSH_ERROR, self.image.status)
+ self.assertEqual(utils.Status.PUSH_ERROR, self.image.status)
# Try again, this time without exception.
pusher.reset()
pusher.run()
self.assertEqual(2, mock_client().push.call_count)
self.assertTrue(pusher.success)
- self.assertEqual(build.Status.BUILT, self.image.status)
+ self.assertEqual(utils.Status.BUILT, self.image.status)
@mock.patch.dict(os.environ, clear=True)
@mock.patch('docker.APIClient')
@@ -114,7 +115,7 @@ class TasksTest(base.TestCase):
mock_client().push.assert_called_once_with(
self.image.canonical_name, decode=True, stream=True)
self.assertFalse(pusher.success)
- self.assertEqual(build.Status.PUSH_ERROR, self.image.status)
+ self.assertEqual(utils.Status.PUSH_ERROR, self.image.status)
@mock.patch.dict(os.environ, clear=True)
@mock.patch('docker.APIClient')
@@ -128,7 +129,7 @@ class TasksTest(base.TestCase):
mock_client().push.assert_called_once_with(
self.image.canonical_name, decode=True, stream=True)
self.assertFalse(pusher.success)
- self.assertEqual(build.Status.PUSH_ERROR, self.image.status)
+ self.assertEqual(utils.Status.PUSH_ERROR, self.image.status)
# Try again, this time without exception.
mock_client().push.return_value = [{'stream': 'mock push passes'}]
@@ -136,7 +137,7 @@ class TasksTest(base.TestCase):
pusher.run()
self.assertEqual(2, mock_client().push.call_count)
self.assertTrue(pusher.success)
- self.assertEqual(build.Status.BUILT, self.image.status)
+ self.assertEqual(utils.Status.BUILT, self.image.status)
@mock.patch.dict(os.environ, clear=True)
@mock.patch('docker.APIClient')
@@ -246,7 +247,7 @@ class TasksTest(base.TestCase):
get_result = builder.process_source(self.image, self.image.source)
self.assertIsNone(get_result)
- self.assertEqual(self.image.status, build.Status.ERROR)
+ self.assertEqual(self.image.status, utils.Status.ERROR)
mock_get.assert_called_once_with(self.image.source['source'],
timeout=120)
@@ -279,7 +280,7 @@ class TasksTest(base.TestCase):
push_queue = mock.Mock()
builder = build.BuildTask(self.conf, self.image, push_queue)
get_result = builder.process_source(self.image, self.image.source)
- self.assertEqual(self.image.status, build.Status.ERROR)
+ self.assertEqual(self.image.status, utils.Status.ERROR)
self.assertFalse(builder.success)
if source['type'] != 'local':
self.assertIsNone(get_result)
@@ -305,7 +306,7 @@ class TasksTest(base.TestCase):
mock_rmtree.assert_called_with(
"fake_image_path/fake-image1-archive-fake-reference1")
- self.assertEqual(self.image.status, build.Status.ERROR)
+ self.assertEqual(self.image.status, utils.Status.ERROR)
self.assertFalse(builder.success)
self.assertIsNone(get_result)
@@ -426,20 +427,20 @@ class KollaWorkerTest(base.TestCase):
def _get_matched_images(self, images):
return [image for image in images
- if image.status == build.Status.MATCHED]
+ if image.status == utils.Status.MATCHED]
def test_skip_parents(self):
self.conf.set_override('skip_parents', True)
kolla = build.KollaWorker(self.conf)
kolla.images = self.images[:2]
for i in kolla.images:
- i.status = build.Status.UNPROCESSED
+ i.status = utils.Status.UNPROCESSED
if i.parent:
i.parent.children.append(i)
kolla.filter_images()
- self.assertEqual(build.Status.MATCHED, kolla.images[1].status)
- self.assertEqual(build.Status.SKIPPED, kolla.images[1].parent.status)
+ self.assertEqual(utils.Status.MATCHED, kolla.images[1].status)
+ self.assertEqual(utils.Status.SKIPPED, kolla.images[1].parent.status)
def test_skip_parents_regex(self):
self.conf.set_override('regex', ['image-child'])
@@ -447,13 +448,13 @@ class KollaWorkerTest(base.TestCase):
kolla = build.KollaWorker(self.conf)
kolla.images = self.images[:2]
for i in kolla.images:
- i.status = build.Status.UNPROCESSED
+ i.status = utils.Status.UNPROCESSED
if i.parent:
i.parent.children.append(i)
kolla.filter_images()
- self.assertEqual(build.Status.MATCHED, kolla.images[1].status)
- self.assertEqual(build.Status.SKIPPED, kolla.images[1].parent.status)
+ self.assertEqual(utils.Status.MATCHED, kolla.images[1].status)
+ self.assertEqual(utils.Status.SKIPPED, kolla.images[1].parent.status)
def test_skip_parents_match_grandchildren(self):
self.conf.set_override('skip_parents', True)
@@ -463,14 +464,14 @@ class KollaWorkerTest(base.TestCase):
self.images[1].children.append(image_grandchild)
kolla.images = self.images[:2] + [image_grandchild]
for i in kolla.images:
- i.status = build.Status.UNPROCESSED
+ i.status = utils.Status.UNPROCESSED
if i.parent:
i.parent.children.append(i)
kolla.filter_images()
- self.assertEqual(build.Status.MATCHED, kolla.images[2].status)
- self.assertEqual(build.Status.SKIPPED, kolla.images[2].parent.status)
- self.assertEqual(build.Status.SKIPPED, kolla.images[1].parent.status)
+ self.assertEqual(utils.Status.MATCHED, kolla.images[2].status)
+ self.assertEqual(utils.Status.SKIPPED, kolla.images[2].parent.status)
+ self.assertEqual(utils.Status.SKIPPED, kolla.images[1].parent.status)
def test_skip_parents_match_grandchildren_regex(self):
self.conf.set_override('regex', ['image-grandchild'])
@@ -481,14 +482,14 @@ class KollaWorkerTest(base.TestCase):
self.images[1].children.append(image_grandchild)
kolla.images = self.images[:2] + [image_grandchild]
for i in kolla.images:
- i.status = build.Status.UNPROCESSED
+ i.status = utils.Status.UNPROCESSED
if i.parent:
i.parent.children.append(i)
kolla.filter_images()
- self.assertEqual(build.Status.MATCHED, kolla.images[2].status)
- self.assertEqual(build.Status.SKIPPED, kolla.images[2].parent.status)
- self.assertEqual(build.Status.SKIPPED, kolla.images[1].parent.status)
+ self.assertEqual(utils.Status.MATCHED, kolla.images[2].status)
+ self.assertEqual(utils.Status.SKIPPED, kolla.images[2].parent.status)
+ self.assertEqual(utils.Status.SKIPPED, kolla.images[1].parent.status)
@mock.patch.object(build.Image, 'in_docker_cache')
def test_skip_existing(self, mock_in_cache):
@@ -497,11 +498,11 @@ class KollaWorkerTest(base.TestCase):
kolla = build.KollaWorker(self.conf)
kolla.images = self.images[:2]
for i in kolla.images:
- i.status = build.Status.UNPROCESSED
+ i.status = utils.Status.UNPROCESSED
kolla.filter_images()
- self.assertEqual(build.Status.SKIPPED, kolla.images[0].status)
- self.assertEqual(build.Status.MATCHED, kolla.images[1].status)
+ self.assertEqual(utils.Status.SKIPPED, kolla.images[0].status)
+ self.assertEqual(utils.Status.MATCHED, kolla.images[1].status)
def test_without_profile(self):
kolla = build.KollaWorker(self.conf)
@@ -602,10 +603,10 @@ class KollaWorkerTest(base.TestCase):
def test_summary(self):
kolla = build.KollaWorker(self.conf)
kolla.images = self.images
- kolla.image_statuses_good['good'] = build.Status.BUILT
- kolla.image_statuses_bad['bad'] = build.Status.ERROR
- kolla.image_statuses_allowed_to_fail['bad2'] = build.Status.ERROR
- kolla.image_statuses_unmatched['unmatched'] = build.Status.UNMATCHED
+ kolla.image_statuses_good['good'] = utils.Status.BUILT
+ kolla.image_statuses_bad['bad'] = utils.Status.ERROR
+ kolla.image_statuses_allowed_to_fail['bad2'] = utils.Status.ERROR
+ kolla.image_statuses_unmatched['unmatched'] = utils.Status.UNMATCHED
results = kolla.summary()
self.assertEqual('error', results['failed'][0]['status']) # bad
self.assertEqual('error', results['failed'][1]['status']) # bad2