From 75754c465841d9e12315952e23e39a0721da12f5 Mon Sep 17 00:00:00 2001 From: Steve Baker Date: Mon, 20 Mar 2017 10:23:00 +1300 Subject: [PATCH] Rename 'uploads' key to 'container_images' This will allow this file to be used for both uploading and image building. The old 'uploads' key will continue to work. Change-Id: Ie09d784119e53b90e5ad0c9028459486cff177c7 --- contrib/overcloud_containers.yaml | 2 +- tripleo_common/image/base.py | 8 +++-- tripleo_common/image/build.py | 2 +- tripleo_common/image/image_uploader.py | 4 ++- .../tests/image/test_image_uploader.py | 30 +++++++++++++++++++ 5 files changed, 41 insertions(+), 5 deletions(-) diff --git a/contrib/overcloud_containers.yaml b/contrib/overcloud_containers.yaml index 37ed774b1..412e2b9fc 100644 --- a/contrib/overcloud_containers.yaml +++ b/contrib/overcloud_containers.yaml @@ -1,4 +1,4 @@ -uploads: +container_images: - imagename: tripleoupstream/centos-binary-aodh-api:latest - imagename: tripleoupstream/centos-binary-aodh-evaluator:latest - imagename: tripleoupstream/centos-binary-aodh-notifier:latest diff --git a/tripleo_common/image/base.py b/tripleo_common/image/base.py index 1109e5ba2..67d97ac8a 100644 --- a/tripleo_common/image/base.py +++ b/tripleo_common/image/base.py @@ -24,7 +24,11 @@ from tripleo_common.image.exception import ImageSpecificationException class BaseImageManager(object): logger = log.getLogger(__name__ + '.BaseImageManager') APPEND_ATTRIBUTES = ['elements', 'options', 'packages'] - CONFIG_SECTIONS = ['disk_images', 'uploads'] + CONFIG_SECTIONS = ( + DISK_IMAGES, UPLOADS, CONTAINER_IMAGES + ) = ( + 'disk_images', 'uploads', 'container_images' + ) def __init__(self, config_files, images=None): self.config_files = config_files @@ -83,5 +87,5 @@ class BaseImageManager(object): def json_output(self): self.logger.info('Using config files: %s' % self.config_files) - disk_images = self.load_config_files(self.CONFIG_SECTIONS[0]) + disk_images = self.load_config_files(self.DISK_IMAGES) print(json.dumps(disk_images)) diff --git a/tripleo_common/image/build.py b/tripleo_common/image/build.py index 03e2575dd..710f0f912 100644 --- a/tripleo_common/image/build.py +++ b/tripleo_common/image/build.py @@ -45,7 +45,7 @@ class ImageBuildManager(BaseImageManager): self.logger.info('Using config files: %s' % self.config_files) - disk_images = self.load_config_files(self.CONFIG_SECTIONS[0]) + disk_images = self.load_config_files(self.DISK_IMAGES) for image in disk_images: arch = image.get('arch', 'amd64') diff --git a/tripleo_common/image/image_uploader.py b/tripleo_common/image/image_uploader.py index 15a2e18b9..eb34660c8 100644 --- a/tripleo_common/image/image_uploader.py +++ b/tripleo_common/image/image_uploader.py @@ -40,7 +40,9 @@ class ImageUploadManager(BaseImageManager): self.logger.info('Using config files: %s' % self.config_files) - upload_images = self.load_config_files(self.CONFIG_SECTIONS[1]) + uploads = self.load_config_files(self.UPLOADS) or [] + container_images = self.load_config_files(self.CONTAINER_IMAGES) or [] + upload_images = uploads + container_images default_push_destination = self.get_ctrl_plane_ip() + ':8787' for item in upload_images: diff --git a/tripleo_common/tests/image/test_image_uploader.py b/tripleo_common/tests/image/test_image_uploader.py index 8da55d6b6..f5b537357 100644 --- a/tripleo_common/tests/image/test_image_uploader.py +++ b/tripleo_common/tests/image/test_image_uploader.py @@ -27,6 +27,19 @@ from tripleo_common.tests.image import fakes filedata = six.u( + """container_images: + - imagename: tripleoupstream/heat-docker-agents-centos:latest + push_destination: localhost:8787 + - imagename: tripleoupstream/centos-binary-nova-compute:liberty + uploader: docker + pull_source: docker.io + push_destination: localhost:8787 + - imagename: tripleoupstream/centos-binary-nova-libvirt:liberty + uploader: docker + pull_source: docker.io +""") + +legacy_filedata = six.u( """uploads: - imagename: tripleoupstream/heat-docker-agents-centos:latest push_destination: localhost:8787 @@ -65,6 +78,23 @@ class TestImageUploadManager(base.TestCase): key=operator.itemgetter('imagename')) self.assertEqual(sorted_expected_data, sorted_parsed_data) + @mock.patch('tripleo_common.image.base.open', + mock.mock_open(read_data=legacy_filedata), create=True) + @mock.patch('os.path.isfile', return_value=True) + @mock.patch('fcntl.ioctl', side_effect=Exception) + @mock.patch('tripleo_common.image.image_uploader.Client') + def test_legacy_file_parsing(self, mockpath, mockioctl, mockdocker): + manager = ImageUploadManager(self.filelist, debug=True) + parsed_data = manager.upload() + mockpath(self.filelist[0]) + + expected_data = fakes.create_parsed_upload_images() + sorted_expected_data = sorted(expected_data, + key=operator.itemgetter('imagename')) + sorted_parsed_data = sorted(parsed_data, + key=operator.itemgetter('imagename')) + self.assertEqual(sorted_expected_data, sorted_parsed_data) + class TestImageUploader(base.TestCase):