Refactor buildah logging

- Add .BuildahBuilder to logging for easier identification
- move log instance creation to class
- Add logging configuration
- Replace a few prints with log

Old Log in containers-build-errors.log:
Processing containers: ['base']
Building base image with:

New Log in containers-build-errors.log
2020-10-30 18:50:10.847 865001 INFO tripleo_common.image.builder.buildah.BuildahBuilder [-] Processing containers: ['cinder-cooldriver2', 'cinder-cooldriver']
2020-10-30 18:50:10.848 865001 INFO tripleo_common.image.builder.buildah.BuildahBuilder [-] Building cinder-cooldriver2 image with: sudo buildah

Depends-On: https://review.opendev.org/#/c/760980/
Change-Id: I072edaf232004a6118b956614490460efb40fbfc
This commit is contained in:
Sergii Golovatiuk 2020-10-08 18:57:25 +02:00
parent f8523dbeab
commit 6d640012ca
1 changed files with 19 additions and 11 deletions

View File

@ -21,18 +21,21 @@ import six
import tenacity
from oslo_concurrency import processutils
from oslo_config import cfg
from oslo_log import log as logging
from tripleo_common import constants
from tripleo_common.image.builder import base
from tripleo_common.utils import process
LOG = logging.getLogger(__name__)
CONF = cfg.CONF
class BuildahBuilder(base.BaseBuilder):
"""Builder to build container images with Buildah."""
log = logging.getLogger(__name__ + ".BuildahBuilder")
def __init__(self, work_dir, deps, base='fedora', img_type='binary',
tag='latest', namespace='master',
registry_address='127.0.0.1:8787', push_containers=True,
@ -62,6 +65,9 @@ class BuildahBuilder(base.BaseBuilder):
:params debug: Enable debug flag. Default to False.
"""
logging.register_options(CONF)
logging.setup(CONF, '')
super(BuildahBuilder, self).__init__()
if build_timeout is None:
self.build_timeout = constants.BUILD_TIMEOUT
@ -97,8 +103,8 @@ class BuildahBuilder(base.BaseBuilder):
"""
if container_name not in self.cont_map:
LOG.error('Container not found in Kolla '
'deps: %s' % container_name)
self.log.error('Container not found in Kolla '
'deps: %s' % container_name)
return self.cont_map.get(container_name, '')
def _get_destination(self, container_name):
@ -164,7 +170,8 @@ class BuildahBuilder(base.BaseBuilder):
self._get_destination(container_name),
container_build_path])
args = self.buildah_cmd + bud_args
print("Building %s image with: %s" % (container_name, ' '.join(args)))
self.log.info("Building %s image with: %s" %
(container_name, ' '.join(args)))
process.execute(
*args,
check_exit_code=True,
@ -190,7 +197,8 @@ class BuildahBuilder(base.BaseBuilder):
# else than a Docker registry.
args = self.buildah_cmd + ['push', '--tls-verify=False', destination,
'docker://' + destination]
print("Pushing %s image with: %s" % (destination, ' '.join(args)))
self.log.info("Pushing %s image with: %s" %
(destination, ' '.join(args)))
process.execute(*args, run_as_root=False, use_standard_locale=True)
def build_all(self, deps=None):
@ -207,9 +215,9 @@ class BuildahBuilder(base.BaseBuilder):
deps = self.deps
container_deps = self._generate_deps(deps=deps, containers=list())
LOG.debug("All container deps: {}".format(container_deps))
self.log.debug("All container deps: {}".format(container_deps))
for containers in container_deps:
LOG.info("Processing containers: {}".format(containers))
self.log.info("Processing containers: {}".format(containers))
if isinstance(deps, (list,)):
self._multi_build(containers=containers)
else:
@ -229,7 +237,7 @@ class BuildahBuilder(base.BaseBuilder):
:returns: list
"""
LOG.debug("Process deps: {}".format(deps))
self.log.debug("Process deps: {}".format(deps))
if isinstance(deps, (six.string_types,)):
if prio_list:
prio_list.append(deps)
@ -243,7 +251,7 @@ class BuildahBuilder(base.BaseBuilder):
else:
containers.append(parents)
for value in deps.values():
LOG.debug("Recursing with: {}".format(value))
self.log.debug("Recursing with: {}".format(value))
self._generate_deps(
deps=value,
containers=containers
@ -262,14 +270,14 @@ class BuildahBuilder(base.BaseBuilder):
containers.append(dep_list)
for item in dep_rehash_list:
LOG.debug("Recursing with: {}".format(item))
self.log.debug("Recursing with: {}".format(item))
self._generate_deps(
deps=item,
containers=containers,
prio_list=dep_list
)
LOG.debug("Constructed containers: {}".format(containers))
self.log.debug("Constructed containers: {}".format(containers))
return containers
def _multi_build(self, containers):