diff --git a/tripleoclient/tests/v1/overcloud_image/test_overcloud_image.py b/tripleoclient/tests/v1/overcloud_image/test_overcloud_image.py index 873397ddd..42665392c 100644 --- a/tripleoclient/tests/v1/overcloud_image/test_overcloud_image.py +++ b/tripleoclient/tests/v1/overcloud_image/test_overcloud_image.py @@ -560,6 +560,33 @@ class TestUploadOvercloudImage(TestPluginV1): '"/httpboot/agent.ramdisk"', shell=True) ]) + @mock.patch('os.path.isfile') + @mock.patch('subprocess.check_call', autospec=True) + def test_overcloud_create_images_image_path(self, mock_subprocess_call, + mock_isfile): + parsed_args = self.check_parser(self.cmd, + ['--image-path', '/foo'], + []) + self.cmd._image_try_update = mock.Mock() + mock_isfile.return_value = False + + self.cmd.take_action(parsed_args) + + expected = [ + mock.call('overcloud-full-vmlinuz', '/foo/overcloud-full.vmlinuz', + mock.ANY), + mock.call('overcloud-full-initrd', '/foo/overcloud-full.initrd', + mock.ANY), + mock.call('overcloud-full', '/foo/overcloud-full.qcow2', + mock.ANY), + mock.call('bm-deploy-kernel', '/foo/ironic-python-agent.kernel', + mock.ANY), + mock.call('bm-deploy-ramdisk', + '/foo/ironic-python-agent.initramfs', + mock.ANY), + ] + self.assertEqual(expected, self.cmd._image_try_update.mock_calls) + @mock.patch('subprocess.check_call', autospec=True) def test_overcloud_create_noupdate_images(self, mock_subprocess_call): parsed_args = self.check_parser(self.cmd, [], []) diff --git a/tripleoclient/v1/overcloud_image.py b/tripleoclient/v1/overcloud_image.py index b61241f67..2c6bd6ac4 100644 --- a/tripleoclient/v1/overcloud_image.py +++ b/tripleoclient/v1/overcloud_image.py @@ -813,7 +813,10 @@ class UploadOvercloudImage(command.Command): # vmlinuz and initrd only need to be uploaded for a partition image if not parsed_args.whole_disk: oc_vmlinuz_name = '%s-vmlinuz' % image_name - oc_vmlinuz_file = '%s.vmlinuz' % image_name + oc_vmlinuz_extension = '.vmlinuz' + oc_vmlinuz_file = os.path.join(parsed_args.image_path, + image_name + + oc_vmlinuz_extension) kernel = (self._image_try_update(oc_vmlinuz_name, oc_vmlinuz_file, parsed_args) or @@ -826,7 +829,10 @@ class UploadOvercloudImage(command.Command): )) oc_initrd_name = '%s-initrd' % image_name - oc_initrd_file = '%s.initrd' % image_name + oc_initrd_extension = '.initrd' + oc_initrd_file = os.path.join(parsed_args.image_path, + image_name + + oc_initrd_extension) ramdisk = (self._image_try_update(oc_initrd_name, oc_initrd_file, parsed_args) or @@ -839,7 +845,10 @@ class UploadOvercloudImage(command.Command): )) oc_name = image_name - oc_file = '%s.qcow2' % image_name + oc_extension = '.qcow2' + oc_file = os.path.join(parsed_args.image_path, + image_name + + oc_extension) overcloud_image = (self._image_try_update(oc_name, oc_file, parsed_args) or glance_client_adaptor.upload_image( @@ -865,7 +874,10 @@ class UploadOvercloudImage(command.Command): else: oc_name = image_name - oc_file = '%s.qcow2' % image_name + oc_extension = '.qcow2' + oc_file = os.path.join(parsed_args.image_path, + image_name + + oc_extension) overcloud_image = (self._image_try_update(oc_name, oc_file, parsed_args) or glance_client_adaptor.upload_image( @@ -881,7 +893,10 @@ class UploadOvercloudImage(command.Command): self.log.debug("uploading bm images to glance") deploy_kernel_name = 'bm-deploy-kernel' - deploy_kernel_file = '%s.kernel' % os.environ['AGENT_NAME'] + deploy_kernel_extension = '.kernel' + deploy_kernel_file = os.path.join(parsed_args.image_path, + os.environ['AGENT_NAME'] + + deploy_kernel_extension) self._image_try_update(deploy_kernel_name, deploy_kernel_file, parsed_args) or \ glance_client_adaptor.upload_image( @@ -893,7 +908,10 @@ class UploadOvercloudImage(command.Command): deploy_kernel_file)) deploy_ramdisk_name = 'bm-deploy-ramdisk' - deploy_ramdisk_file = '%s.initramfs' % os.environ['AGENT_NAME'] + deploy_ramdisk_extension = '.initramfs' + deploy_ramdisk_file = os.path.join(parsed_args.image_path, + os.environ['AGENT_NAME'] + + deploy_ramdisk_extension) self._image_try_update(deploy_ramdisk_name, deploy_ramdisk_file, parsed_args) or \ glance_client_adaptor.upload_image(