Merge "Default image build to use yaml files"
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user