Merge "Default image build to use yaml files"

This commit is contained in:
Jenkins
2016-12-21 12:16:46 +00:00
committed by Gerrit Code Review
2 changed files with 35 additions and 4 deletions

View File

@@ -38,6 +38,24 @@ class TestOvercloudImageBuild(TestPluginV1):
self.cmd = overcloud_image.BuildOvercloudImage(self.app, None)
self.cmd._create_builder = _force_builder
@mock.patch('tripleo_common.image.build.ImageBuildManager', autospec=True)
def test_overcloud_image_build_default_yaml(self, mock_manager):
arglist = []
verifylist = []
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
mock_manager.assert_called_once_with(
['/usr/share/openstack-tripleo-common/image-yaml/'
'overcloud-images.yaml',
'/usr/share/openstack-tripleo-common/image-yaml/'
'overcloud-images-centos7.yaml'],
output_directory='.',
skip=True,
images=None)
@mock.patch('tripleo_common.image.build.ImageBuildManager', autospec=True)
def test_overcloud_image_build_yaml(self, mock_manager):
arglist = ['--config-file', 'config.yaml']
@@ -102,13 +120,15 @@ class TestOvercloudImageBuild(TestPluginV1):
skip=True,
images=None)
@mock.patch('tripleo_common.image.build.ImageBuildManager', autospec=True)
@mock.patch('os.path.isfile', autospec=True)
@mock.patch('platform.linux_distribution')
@mock.patch.object(overcloud_image.BuildOvercloudImage,
'_build_image_fedora_user', autospec=True)
def test_overcloud_image_build_all(self, mock_fedora_user,
mock_linux_distribution,
mock_os_path_isfile):
mock_os_path_isfile,
mock_manager):
arglist = ['--all']
verifylist = [('all', True)]
@@ -119,6 +139,7 @@ class TestOvercloudImageBuild(TestPluginV1):
self.cmd.take_action(parsed_args)
self.assertEqual(2, self.mock_disk_image_create.call_count)
self.assertEqual(0, mock_manager.call_count)
@mock.patch('platform.linux_distribution')
@mock.patch('subprocess.call', autospec=True)
@@ -161,12 +182,14 @@ class TestOvercloudImageBuild(TestPluginV1):
mock_open_context.assert_has_calls(
[mock.call('fedora-user.qcow2', 'wb')])
@mock.patch('tripleo_common.image.build.ImageBuildManager', autospec=True)
@mock.patch('platform.linux_distribution')
@mock.patch('os.path.isfile', autospec=True)
def test_overcloud_image_build_overcloud_full(
self,
mock_os_path_isfile,
mock_linux_distribution):
mock_linux_distribution,
mock_manager):
arglist = ['--type', 'overcloud-full']
verifylist = [('image_types', ['overcloud-full'])]
@@ -199,6 +222,7 @@ class TestOvercloudImageBuild(TestPluginV1):
self.assertEqual([mock.call('overcloud-full.qcow2'),
mock.call('overcloud-full.qcow2')],
mock_os_path_isfile.mock_calls)
self.assertEqual(0, mock_manager.call_count)
@mock.patch('platform.linux_distribution')
@mock.patch('os.path.isfile', autospec=True)

View File

@@ -177,6 +177,10 @@ class BuildOvercloudImage(command.Command):
auth_required = False
log = logging.getLogger(__name__ + ".BuildOvercloudImage")
IMAGE_YAML_PATH = "/usr/share/openstack-tripleo-common/image-yaml"
DEFAULT_YAML = ['overcloud-images.yaml', 'overcloud-images-centos7.yaml']
# The constants below are deprecated and will be removed in Pike
TRIPLEOPUPPETELEMENTS = "/usr/share/tripleo-puppet-elements"
INSTACKUNDERCLOUDELEMENTS = "/usr/share/instack-undercloud"
PUPPET_COMMON_ELEMENTS = [
@@ -229,7 +233,7 @@ class BuildOvercloudImage(command.Command):
def get_parser(self, prog_name):
parser = super(BuildOvercloudImage, self).get_parser(prog_name)
image_group = parser.add_mutually_exclusive_group(required=True)
image_group = parser.add_mutually_exclusive_group(required=False)
image_group.add_argument(
"--all",
dest="all",
@@ -592,9 +596,12 @@ class BuildOvercloudImage(command.Command):
def take_action(self, parsed_args):
self.log.debug("take_action(%s)" % parsed_args)
if not parsed_args.config_files:
if parsed_args.all or parsed_args.image_types:
return self._legacy_build(parsed_args)
if not parsed_args.config_files:
parsed_args.config_files = [os.path.join(self.IMAGE_YAML_PATH, f)
for f in self.DEFAULT_YAML]
manager = build.ImageBuildManager(
parsed_args.config_files,
output_directory=parsed_args.output_directory,