Merge "Use ironic-lib's util methods"
This commit is contained in:
commit
69c33f7ed5
@ -6,8 +6,5 @@
|
||||
iscsiadm: CommandFilter, iscsiadm, root
|
||||
|
||||
# ironic/common/utils.py
|
||||
mkswap: CommandFilter, mkswap, root
|
||||
mkfs: CommandFilter, mkfs, root
|
||||
mount: CommandFilter, mount, root
|
||||
umount: CommandFilter, umount, root
|
||||
dd: CommandFilter, dd, root
|
||||
|
@ -23,6 +23,7 @@ import os
|
||||
import shutil
|
||||
|
||||
from ironic_lib import disk_utils
|
||||
from ironic_lib import utils as ironic_utils
|
||||
import jinja2
|
||||
from oslo_concurrency import processutils
|
||||
from oslo_config import cfg
|
||||
@ -119,7 +120,8 @@ def create_vfat_image(output_file, files_info=None, parameters=None,
|
||||
creating filesystem, copying files, etc.
|
||||
"""
|
||||
try:
|
||||
utils.dd('/dev/zero', output_file, 'count=1', "bs=%dKiB" % fs_size_kib)
|
||||
ironic_utils.dd('/dev/zero', output_file, 'count=1',
|
||||
"bs=%dKiB" % fs_size_kib)
|
||||
except processutils.ProcessExecutionError as e:
|
||||
raise exception.ImageCreationFailed(image_type='vfat', error=e)
|
||||
|
||||
@ -129,7 +131,7 @@ def create_vfat_image(output_file, files_info=None, parameters=None,
|
||||
# The label helps ramdisks to find the partition containing
|
||||
# the parameters (by using /dev/disk/by-label/ir-vfd-dev).
|
||||
# NOTE: FAT filesystem label can be up to 11 characters long.
|
||||
utils.mkfs('vfat', output_file, label="ir-vfd-dev")
|
||||
ironic_utils.mkfs('vfat', output_file, label="ir-vfd-dev")
|
||||
utils.mount(output_file, tmpdir, '-o', 'umask=0')
|
||||
except processutils.ProcessExecutionError as e:
|
||||
raise exception.ImageCreationFailed(image_type='vfat', error=e)
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
import os
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
import jinja2
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
@ -84,7 +85,7 @@ def _link_mac_pxe_configs(task):
|
||||
"""
|
||||
|
||||
def create_link(mac_path):
|
||||
utils.unlink_without_raise(mac_path)
|
||||
ironic_utils.unlink_without_raise(mac_path)
|
||||
relative_source_path = os.path.relpath(
|
||||
pxe_config_file_path, os.path.dirname(mac_path))
|
||||
utils.create_link_without_raise(relative_source_path, mac_path)
|
||||
@ -120,7 +121,7 @@ def _link_ip_address_pxe_configs(task, hex_form):
|
||||
for port_ip_address in ip_addrs:
|
||||
ip_address_path = _get_pxe_ip_address_path(port_ip_address,
|
||||
hex_form)
|
||||
utils.unlink_without_raise(ip_address_path)
|
||||
ironic_utils.unlink_without_raise(ip_address_path)
|
||||
relative_source_path = os.path.relpath(
|
||||
pxe_config_file_path, os.path.dirname(ip_address_path))
|
||||
utils.create_link_without_raise(relative_source_path,
|
||||
@ -276,18 +277,18 @@ def clean_up_pxe_config(task):
|
||||
except exception.InvalidIPv4Address:
|
||||
continue
|
||||
# Cleaning up config files created for grub2.
|
||||
utils.unlink_without_raise(ip_address_path)
|
||||
ironic_utils.unlink_without_raise(ip_address_path)
|
||||
# Cleaning up config files created for elilo.
|
||||
utils.unlink_without_raise(hex_ip_path)
|
||||
ironic_utils.unlink_without_raise(hex_ip_path)
|
||||
else:
|
||||
for mac in driver_utils.get_node_mac_addresses(task):
|
||||
utils.unlink_without_raise(_get_pxe_mac_path(mac))
|
||||
ironic_utils.unlink_without_raise(_get_pxe_mac_path(mac))
|
||||
# TODO(lucasagomes): Backward compatibility with :hexraw,
|
||||
# to be removed in Mitaka.
|
||||
# see: https://bugs.launchpad.net/ironic/+bug/1441710
|
||||
if CONF.pxe.ipxe_enabled:
|
||||
utils.unlink_without_raise(_get_pxe_mac_path(mac,
|
||||
delimiter=''))
|
||||
ironic_utils.unlink_without_raise(_get_pxe_mac_path(mac,
|
||||
delimiter=''))
|
||||
|
||||
utils.rmtree_without_raise(os.path.join(get_root_dir(),
|
||||
task.node.uuid))
|
||||
|
@ -32,7 +32,6 @@ import netaddr
|
||||
from oslo_concurrency import processutils
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
from oslo_utils import timeutils
|
||||
import paramiko
|
||||
import pytz
|
||||
@ -463,60 +462,6 @@ def tempdir(**kwargs):
|
||||
LOG.error(_LE('Could not remove tmpdir: %s'), e)
|
||||
|
||||
|
||||
def mkfs(fs, path, label=None):
|
||||
"""Format a file or block device
|
||||
|
||||
:param fs: Filesystem type (examples include 'swap', 'ext3', 'ext4'
|
||||
'btrfs', etc.)
|
||||
:param path: Path to file or block device to format
|
||||
:param label: Volume label to use
|
||||
"""
|
||||
# NOTE(jlvillal): This function has been moved to ironic-lib. And is
|
||||
# planned to be deleted here. If need to modify this function, please also
|
||||
# do the same modification in ironic-lib
|
||||
if fs == 'swap':
|
||||
args = ['mkswap']
|
||||
else:
|
||||
args = ['mkfs', '-t', fs]
|
||||
# add -F to force no interactive execute on non-block device.
|
||||
if fs in ('ext3', 'ext4'):
|
||||
args.extend(['-F'])
|
||||
if label:
|
||||
if fs in ('msdos', 'vfat'):
|
||||
label_opt = '-n'
|
||||
else:
|
||||
label_opt = '-L'
|
||||
args.extend([label_opt, label])
|
||||
args.append(path)
|
||||
try:
|
||||
execute(*args, run_as_root=True, use_standard_locale=True)
|
||||
except processutils.ProcessExecutionError as e:
|
||||
with excutils.save_and_reraise_exception() as ctx:
|
||||
if os.strerror(errno.ENOENT) in e.stderr:
|
||||
ctx.reraise = False
|
||||
LOG.exception(_LE('Failed to make file system. '
|
||||
'File system %s is not supported.'), fs)
|
||||
raise exception.FileSystemNotSupported(fs=fs)
|
||||
else:
|
||||
LOG.exception(_LE('Failed to create a file system '
|
||||
'in %(path)s. Error: %(error)s'),
|
||||
{'path': path, 'error': e})
|
||||
|
||||
|
||||
def unlink_without_raise(path):
|
||||
# NOTE(jlvillal): This function has been moved to ironic-lib. And is
|
||||
# planned to be deleted here. If need to modify this function, please also
|
||||
# do the same modification in ironic-lib
|
||||
try:
|
||||
os.unlink(path)
|
||||
except OSError as e:
|
||||
if e.errno == errno.ENOENT:
|
||||
return
|
||||
else:
|
||||
LOG.warning(_LW("Failed to unlink %(path)s, error: %(e)s"),
|
||||
{'path': path, 'e': e})
|
||||
|
||||
|
||||
def rmtree_without_raise(path):
|
||||
try:
|
||||
if os.path.isdir(path):
|
||||
@ -588,32 +533,6 @@ def umount(loc, *args):
|
||||
execute(*args, run_as_root=True, check_exit_code=[0])
|
||||
|
||||
|
||||
def dd(src, dst, *args):
|
||||
"""Execute dd from src to dst.
|
||||
|
||||
:param src: the input file for dd command.
|
||||
:param dst: the output file for dd command.
|
||||
:param args: a tuple containing the arguments to be
|
||||
passed to dd command.
|
||||
:raises: processutils.ProcessExecutionError if it failed
|
||||
to run the process.
|
||||
"""
|
||||
# NOTE(jlvillal): This function has been moved to ironic-lib. And is
|
||||
# planned to be deleted here. If need to modify this function, please also
|
||||
# do the same modification in ironic-lib
|
||||
LOG.debug("Starting dd process.")
|
||||
execute('dd', 'if=%s' % src, 'of=%s' % dst, *args,
|
||||
use_standard_locale=True, run_as_root=True, check_exit_code=[0])
|
||||
|
||||
|
||||
def is_http_url(url):
|
||||
# NOTE(jlvillal): This function has been moved to ironic-lib. And is
|
||||
# planned to be deleted here. If need to modify this function, please also
|
||||
# do the same modification in ironic-lib
|
||||
url = url.lower()
|
||||
return url.startswith('http://') or url.startswith('https://')
|
||||
|
||||
|
||||
def check_dir(directory_to_check=None, required_space=1):
|
||||
"""Check a directory is usable.
|
||||
|
||||
|
@ -26,6 +26,7 @@ import signal
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
from oslo_concurrency import processutils
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
@ -136,7 +137,7 @@ def _stop_console(node_uuid):
|
||||
"but pid file exists while trying to stop "
|
||||
"shellinabox console."), node_uuid)
|
||||
finally:
|
||||
utils.unlink_without_raise(_get_console_pid_file(node_uuid))
|
||||
ironic_utils.unlink_without_raise(_get_console_pid_file(node_uuid))
|
||||
|
||||
|
||||
def make_persistent_password_file(path, password):
|
||||
|
@ -18,6 +18,7 @@ Boot Interface for iLO drivers and its supporting methods.
|
||||
import os
|
||||
import tempfile
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
@ -32,7 +33,6 @@ from ironic.common.i18n import _LW
|
||||
from ironic.common import image_service
|
||||
from ironic.common import images
|
||||
from ironic.common import swift
|
||||
from ironic.common import utils
|
||||
from ironic.conductor import utils as manager_utils
|
||||
from ironic.drivers import base
|
||||
from ironic.drivers.modules import deploy_utils
|
||||
@ -223,7 +223,7 @@ def _clean_up_boot_iso_for_instance(node):
|
||||
ilo_boot_iso_name = os.path.basename(result.path)
|
||||
boot_iso_path = os.path.join(
|
||||
CONF.deploy.http_root, ilo_boot_iso_name)
|
||||
utils.unlink_without_raise(boot_iso_path)
|
||||
ironic_utils.unlink_without_raise(boot_iso_path)
|
||||
|
||||
|
||||
def _parse_deploy_info(node):
|
||||
|
@ -20,6 +20,7 @@ import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import importutils
|
||||
@ -325,7 +326,7 @@ def destroy_floppy_image_from_web_server(node):
|
||||
|
||||
object_name = _get_floppy_image_name(node)
|
||||
image_path = os.path.join(CONF.deploy.http_root, object_name)
|
||||
utils.unlink_without_raise(image_path)
|
||||
ironic_utils.unlink_without_raise(image_path)
|
||||
|
||||
|
||||
def attach_vmedia(node, device, url):
|
||||
|
@ -21,6 +21,7 @@ Ironic Native IPMI power manager.
|
||||
|
||||
import os
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import excutils
|
||||
@ -605,7 +606,7 @@ class NativeIPMIShellinaboxConsole(base.ConsoleInterface):
|
||||
console_cmd)
|
||||
except exception.ConsoleError:
|
||||
with excutils.save_and_reraise_exception():
|
||||
utils.unlink_without_raise(path)
|
||||
ironic_utils.unlink_without_raise(path)
|
||||
|
||||
def stop_console(self, task):
|
||||
"""Stop the remote console session for the node.
|
||||
@ -617,7 +618,7 @@ class NativeIPMIShellinaboxConsole(base.ConsoleInterface):
|
||||
console_utils.stop_shellinabox_console(task.node.uuid)
|
||||
finally:
|
||||
password_file = _console_pwfile_path(task.node.uuid)
|
||||
utils.unlink_without_raise(password_file)
|
||||
ironic_utils.unlink_without_raise(password_file)
|
||||
|
||||
def get_console(self, task):
|
||||
"""Get the type and connection information about the console.
|
||||
|
@ -36,6 +36,7 @@ import subprocess
|
||||
import tempfile
|
||||
import time
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
from oslo_concurrency import processutils
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
@ -1126,7 +1127,7 @@ class IPMIShellinaboxConsole(base.ConsoleInterface):
|
||||
ipmi_cmd)
|
||||
except (exception.ConsoleError, exception.ConsoleSubprocessFailed):
|
||||
with excutils.save_and_reraise_exception():
|
||||
utils.unlink_without_raise(path)
|
||||
ironic_utils.unlink_without_raise(path)
|
||||
|
||||
def stop_console(self, task):
|
||||
"""Stop the remote console session for the node.
|
||||
@ -1137,7 +1138,7 @@ class IPMIShellinaboxConsole(base.ConsoleInterface):
|
||||
try:
|
||||
console_utils.stop_shellinabox_console(task.node.uuid)
|
||||
finally:
|
||||
utils.unlink_without_raise(
|
||||
ironic_utils.unlink_without_raise(
|
||||
_console_pwfile_path(task.node.uuid))
|
||||
|
||||
def get_console(self, task):
|
||||
|
@ -20,6 +20,7 @@ import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import importutils
|
||||
@ -32,7 +33,6 @@ from ironic.common.i18n import _LE
|
||||
from ironic.common.i18n import _LI
|
||||
from ironic.common import images
|
||||
from ironic.common import states
|
||||
from ironic.common import utils
|
||||
from ironic.conductor import utils as manager_utils
|
||||
from ironic.drivers import base
|
||||
from ironic.drivers.modules import deploy_utils
|
||||
@ -421,7 +421,7 @@ def _remove_share_file(share_filename):
|
||||
"""
|
||||
share_fullpathname = os.path.join(
|
||||
CONF.irmc.remote_image_share_name, share_filename)
|
||||
utils.unlink_without_raise(share_fullpathname)
|
||||
ironic_utils.unlink_without_raise(share_fullpathname)
|
||||
|
||||
|
||||
def _attach_virtual_cd(node, bootable_iso_filename):
|
||||
|
@ -16,6 +16,7 @@
|
||||
import os
|
||||
|
||||
from ironic_lib import disk_utils
|
||||
from ironic_lib import utils as ironic_utils
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import fileutils
|
||||
@ -281,7 +282,7 @@ def destroy_images(node_uuid):
|
||||
|
||||
:param node_uuid: the uuid of the ironic node.
|
||||
"""
|
||||
utils.unlink_without_raise(_get_image_file_path(node_uuid))
|
||||
ironic_utils.unlink_without_raise(_get_image_file_path(node_uuid))
|
||||
utils.rmtree_without_raise(_get_image_dir_path(node_uuid))
|
||||
InstanceImageCache().clean_up()
|
||||
|
||||
|
@ -18,6 +18,7 @@ PXE Boot Interface
|
||||
import os
|
||||
import shutil
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
from oslo_config import cfg
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import fileutils
|
||||
@ -33,7 +34,6 @@ from ironic.common import image_service as service
|
||||
from ironic.common import paths
|
||||
from ironic.common import pxe_utils
|
||||
from ironic.common import states
|
||||
from ironic.common import utils
|
||||
from ironic.drivers import base
|
||||
from ironic.drivers.modules import agent
|
||||
from ironic.drivers.modules import deploy_utils
|
||||
@ -360,7 +360,7 @@ def _clean_up_pxe_env(task, images_info):
|
||||
"""
|
||||
for label in images_info:
|
||||
path = images_info[label][1]
|
||||
utils.unlink_without_raise(path)
|
||||
ironic_utils.unlink_without_raise(path)
|
||||
|
||||
pxe_utils.clean_up_pxe_config(task)
|
||||
TFTPImageCache().clean_up()
|
||||
|
@ -19,6 +19,7 @@ import os
|
||||
import shutil
|
||||
|
||||
from ironic_lib import disk_utils
|
||||
from ironic_lib import utils as ironic_utils
|
||||
import mock
|
||||
from oslo_concurrency import processutils
|
||||
from oslo_config import cfg
|
||||
@ -284,10 +285,10 @@ class FsImageTestCase(base.TestCase):
|
||||
@mock.patch.object(images, '_create_root_fs', autospec=True)
|
||||
@mock.patch.object(utils, 'tempdir', autospec=True)
|
||||
@mock.patch.object(utils, 'write_to_file', autospec=True)
|
||||
@mock.patch.object(utils, 'dd', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'dd', autospec=True)
|
||||
@mock.patch.object(utils, 'umount', autospec=True)
|
||||
@mock.patch.object(utils, 'mount', autospec=True)
|
||||
@mock.patch.object(utils, 'mkfs', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'mkfs', autospec=True)
|
||||
def test_create_vfat_image(
|
||||
self, mkfs_mock, mount_mock, umount_mock, dd_mock, write_mock,
|
||||
tempdir_mock, create_root_fs_mock):
|
||||
@ -319,10 +320,10 @@ class FsImageTestCase(base.TestCase):
|
||||
|
||||
@mock.patch.object(images, '_create_root_fs', autospec=True)
|
||||
@mock.patch.object(utils, 'tempdir', autospec=True)
|
||||
@mock.patch.object(utils, 'dd', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'dd', autospec=True)
|
||||
@mock.patch.object(utils, 'umount', autospec=True)
|
||||
@mock.patch.object(utils, 'mount', autospec=True)
|
||||
@mock.patch.object(utils, 'mkfs', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'mkfs', autospec=True)
|
||||
def test_create_vfat_image_always_umount(
|
||||
self, mkfs_mock, mount_mock, umount_mock, dd_mock,
|
||||
tempdir_mock, create_root_fs_mock):
|
||||
@ -338,7 +339,7 @@ class FsImageTestCase(base.TestCase):
|
||||
|
||||
umount_mock.assert_called_once_with('tempdir')
|
||||
|
||||
@mock.patch.object(utils, 'dd', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'dd', autospec=True)
|
||||
def test_create_vfat_image_dd_fails(self, dd_mock):
|
||||
|
||||
dd_mock.side_effect = processutils.ProcessExecutionError
|
||||
@ -346,8 +347,8 @@ class FsImageTestCase(base.TestCase):
|
||||
images.create_vfat_image, 'tgt_file')
|
||||
|
||||
@mock.patch.object(utils, 'tempdir', autospec=True)
|
||||
@mock.patch.object(utils, 'dd', autospec=True)
|
||||
@mock.patch.object(utils, 'mkfs', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'dd', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'mkfs', autospec=True)
|
||||
def test_create_vfat_image_mkfs_fails(self, mkfs_mock, dd_mock,
|
||||
tempdir_mock):
|
||||
|
||||
@ -361,10 +362,10 @@ class FsImageTestCase(base.TestCase):
|
||||
|
||||
@mock.patch.object(images, '_create_root_fs', autospec=True)
|
||||
@mock.patch.object(utils, 'tempdir', autospec=True)
|
||||
@mock.patch.object(utils, 'dd', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'dd', autospec=True)
|
||||
@mock.patch.object(utils, 'umount', autospec=True)
|
||||
@mock.patch.object(utils, 'mount', autospec=True)
|
||||
@mock.patch.object(utils, 'mkfs', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'mkfs', autospec=True)
|
||||
def test_create_vfat_image_umount_fails(
|
||||
self, mkfs_mock, mount_mock, umount_mock, dd_mock,
|
||||
tempdir_mock, create_root_fs_mock):
|
||||
|
@ -184,7 +184,7 @@ class TestPXEUtils(db_base.DbTestCase):
|
||||
self.assertEqual(six.text_type(expected_template), rendered_template)
|
||||
|
||||
@mock.patch('ironic.common.utils.create_link_without_raise', autospec=True)
|
||||
@mock.patch('ironic.common.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic_lib.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic.drivers.utils.get_node_mac_addresses', autospec=True)
|
||||
def test__write_mac_pxe_configs(self, get_macs_mock, unlink_mock,
|
||||
create_link_mock):
|
||||
@ -210,7 +210,7 @@ class TestPXEUtils(db_base.DbTestCase):
|
||||
create_link_mock.assert_has_calls(create_link_calls)
|
||||
|
||||
@mock.patch('ironic.common.utils.create_link_without_raise', autospec=True)
|
||||
@mock.patch('ironic.common.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic_lib.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic.drivers.utils.get_node_mac_addresses', autospec=True)
|
||||
def test__write_mac_ipxe_configs(self, get_macs_mock, unlink_mock,
|
||||
create_link_mock):
|
||||
@ -243,7 +243,7 @@ class TestPXEUtils(db_base.DbTestCase):
|
||||
create_link_mock.assert_has_calls(create_link_calls)
|
||||
|
||||
@mock.patch('ironic.common.utils.create_link_without_raise', autospec=True)
|
||||
@mock.patch('ironic.common.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic_lib.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic.common.dhcp_factory.DHCPFactory.provider',
|
||||
autospec=True)
|
||||
def test__link_ip_address_pxe_configs(self, provider_mock, unlink_mock,
|
||||
@ -372,7 +372,7 @@ class TestPXEUtils(db_base.DbTestCase):
|
||||
self.ipxe_options_uefi)
|
||||
|
||||
@mock.patch('ironic.common.utils.rmtree_without_raise', autospec=True)
|
||||
@mock.patch('ironic.common.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic_lib.utils.unlink_without_raise', autospec=True)
|
||||
def test_clean_up_pxe_config(self, unlink_mock, rmtree_mock):
|
||||
address = "aa:aa:aa:aa:aa:aa"
|
||||
object_utils.create_test_port(self.context, node_id=self.node.id,
|
||||
@ -538,7 +538,7 @@ class TestPXEUtils(db_base.DbTestCase):
|
||||
self._dhcp_options_for_instance_ipxe(task, boot_file)
|
||||
|
||||
@mock.patch('ironic.common.utils.rmtree_without_raise', autospec=True)
|
||||
@mock.patch('ironic.common.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic_lib.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic.common.dhcp_factory.DHCPFactory.provider')
|
||||
def test_clean_up_pxe_config_uefi(self, provider_mock, unlink_mock,
|
||||
rmtree_mock):
|
||||
@ -563,7 +563,7 @@ class TestPXEUtils(db_base.DbTestCase):
|
||||
os.path.join(CONF.pxe.tftp_root, self.node.uuid))
|
||||
|
||||
@mock.patch('ironic.common.utils.rmtree_without_raise')
|
||||
@mock.patch('ironic.common.utils.unlink_without_raise')
|
||||
@mock.patch('ironic_lib.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic.common.dhcp_factory.DHCPFactory.provider')
|
||||
def test_clean_up_pxe_config_uefi_instance_info(self,
|
||||
provider_mock, unlink_mock,
|
||||
@ -588,7 +588,7 @@ class TestPXEUtils(db_base.DbTestCase):
|
||||
os.path.join(CONF.pxe.tftp_root, self.node.uuid))
|
||||
|
||||
@mock.patch('ironic.common.utils.rmtree_without_raise', autospec=True)
|
||||
@mock.patch('ironic.common.utils.unlink_without_raise', autospec=True)
|
||||
@mock.patch('ironic_lib.utils.unlink_without_raise', autospec=True)
|
||||
def test_clean_up_ipxe_config_uefi(self, unlink_mock, rmtree_mock):
|
||||
self.config(ipxe_enabled=True, group='pxe')
|
||||
address = "aa:aa:aa:aa:aa:aa"
|
||||
|
@ -43,18 +43,6 @@ class BareMetalUtilsTestCase(base.TestCase):
|
||||
s = utils.random_alnum(100)
|
||||
self.assertEqual(100, len(s))
|
||||
|
||||
def test_unlink(self):
|
||||
with mock.patch.object(os, "unlink", autospec=True) as unlink_mock:
|
||||
unlink_mock.return_value = None
|
||||
utils.unlink_without_raise("/fake/path")
|
||||
unlink_mock.assert_called_once_with("/fake/path")
|
||||
|
||||
def test_unlink_ENOENT(self):
|
||||
with mock.patch.object(os, "unlink", autospec=True) as unlink_mock:
|
||||
unlink_mock.side_effect = OSError(errno.ENOENT)
|
||||
utils.unlink_without_raise("/fake/path")
|
||||
unlink_mock.assert_called_once_with("/fake/path")
|
||||
|
||||
def test_create_link(self):
|
||||
with mock.patch.object(os, "symlink", autospec=True) as symlink_mock:
|
||||
symlink_mock.return_value = None
|
||||
@ -472,57 +460,6 @@ class GenericUtilsTestCase(base.TestCase):
|
||||
self.assertFalse(utils.is_valid_no_proxy(proxy9))
|
||||
|
||||
|
||||
class MkfsTestCase(base.TestCase):
|
||||
|
||||
@mock.patch.object(utils, 'execute', autospec=True)
|
||||
def test_mkfs(self, execute_mock):
|
||||
utils.mkfs('ext4', '/my/block/dev')
|
||||
utils.mkfs('msdos', '/my/msdos/block/dev')
|
||||
utils.mkfs('swap', '/my/swap/block/dev')
|
||||
|
||||
expected = [mock.call('mkfs', '-t', 'ext4', '-F', '/my/block/dev',
|
||||
run_as_root=True,
|
||||
use_standard_locale=True),
|
||||
mock.call('mkfs', '-t', 'msdos', '/my/msdos/block/dev',
|
||||
run_as_root=True,
|
||||
use_standard_locale=True),
|
||||
mock.call('mkswap', '/my/swap/block/dev',
|
||||
run_as_root=True,
|
||||
use_standard_locale=True)]
|
||||
self.assertEqual(expected, execute_mock.call_args_list)
|
||||
|
||||
@mock.patch.object(utils, 'execute', autospec=True)
|
||||
def test_mkfs_with_label(self, execute_mock):
|
||||
utils.mkfs('ext4', '/my/block/dev', 'ext4-vol')
|
||||
utils.mkfs('msdos', '/my/msdos/block/dev', 'msdos-vol')
|
||||
utils.mkfs('swap', '/my/swap/block/dev', 'swap-vol')
|
||||
|
||||
expected = [mock.call('mkfs', '-t', 'ext4', '-F', '-L', 'ext4-vol',
|
||||
'/my/block/dev', run_as_root=True,
|
||||
use_standard_locale=True),
|
||||
mock.call('mkfs', '-t', 'msdos', '-n', 'msdos-vol',
|
||||
'/my/msdos/block/dev', run_as_root=True,
|
||||
use_standard_locale=True),
|
||||
mock.call('mkswap', '-L', 'swap-vol',
|
||||
'/my/swap/block/dev', run_as_root=True,
|
||||
use_standard_locale=True)]
|
||||
self.assertEqual(expected, execute_mock.call_args_list)
|
||||
|
||||
@mock.patch.object(utils, 'execute', autospec=True)
|
||||
def test_mkfs_with_unsupported_fs(self, execute_mock):
|
||||
execute_mock.side_effect = iter([processutils.ProcessExecutionError(
|
||||
stderr=os.strerror(errno.ENOENT))])
|
||||
self.assertRaises(exception.FileSystemNotSupported,
|
||||
utils.mkfs, 'foo', '/my/block/dev')
|
||||
|
||||
@mock.patch.object(utils, 'execute', autospec=True)
|
||||
def test_mkfs_with_unexpected_error(self, execute_mock):
|
||||
execute_mock.side_effect = iter([processutils.ProcessExecutionError(
|
||||
stderr='fake')])
|
||||
self.assertRaises(processutils.ProcessExecutionError, utils.mkfs,
|
||||
'ext4', '/my/block/dev', 'ext4-vol')
|
||||
|
||||
|
||||
class TempFilesTestCase(base.TestCase):
|
||||
|
||||
def test_tempdir(self):
|
||||
@ -652,17 +589,6 @@ class TempFilesTestCase(base.TestCase):
|
||||
mock_stat.assert_called_once_with("/fake/path")
|
||||
|
||||
|
||||
class IsHttpUrlTestCase(base.TestCase):
|
||||
|
||||
def test_is_http_url(self):
|
||||
self.assertTrue(utils.is_http_url('http://127.0.0.1'))
|
||||
self.assertTrue(utils.is_http_url('https://127.0.0.1'))
|
||||
self.assertTrue(utils.is_http_url('HTTP://127.1.2.3'))
|
||||
self.assertTrue(utils.is_http_url('HTTPS://127.3.2.1'))
|
||||
self.assertFalse(utils.is_http_url('Zm9vYmFy'))
|
||||
self.assertFalse(utils.is_http_url('11111111'))
|
||||
|
||||
|
||||
class GetUpdatedCapabilitiesTestCase(base.TestCase):
|
||||
|
||||
def test_get_updated_capabilities(self):
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
import tempfile
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
import six
|
||||
@ -27,7 +28,6 @@ from ironic.common.glance_service import service_utils
|
||||
from ironic.common import image_service
|
||||
from ironic.common import images
|
||||
from ironic.common import swift
|
||||
from ironic.common import utils
|
||||
from ironic.conductor import task_manager
|
||||
from ironic.conductor import utils as manager_utils
|
||||
from ironic.drivers.modules import deploy_utils
|
||||
@ -395,7 +395,7 @@ class IloBootPrivateMethodsTestCase(db_base.DbTestCase):
|
||||
'boot-object')
|
||||
self.assertTrue(log_mock.called)
|
||||
|
||||
@mock.patch.object(utils, 'unlink_without_raise', spec_set=True,
|
||||
@mock.patch.object(ironic_utils, 'unlink_without_raise', spec_set=True,
|
||||
autospec=True)
|
||||
def test__clean_up_boot_iso_for_instance_on_webserver(self, unlink_mock):
|
||||
|
||||
|
@ -19,6 +19,7 @@ import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
from oslo_utils import importutils
|
||||
@ -28,7 +29,6 @@ from ironic.common import boot_devices
|
||||
from ironic.common import exception
|
||||
from ironic.common import images
|
||||
from ironic.common import swift
|
||||
from ironic.common import utils
|
||||
from ironic.conductor import task_manager
|
||||
from ironic.conductor import utils as manager_utils
|
||||
from ironic.drivers.modules import deploy_utils
|
||||
@ -718,7 +718,7 @@ class IloCommonMethodsTestCase(db_base.DbTestCase):
|
||||
copy_mock.assert_called_once_with(source, image_path)
|
||||
self.assertFalse(chmod_mock.called)
|
||||
|
||||
@mock.patch.object(utils, 'unlink_without_raise', spec_set=True,
|
||||
@mock.patch.object(ironic_utils, 'unlink_without_raise', spec_set=True,
|
||||
autospec=True)
|
||||
@mock.patch.object(ilo_common, '_get_floppy_image_name', spec_set=True,
|
||||
autospec=True)
|
||||
|
@ -20,6 +20,7 @@ import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
import six
|
||||
@ -30,7 +31,6 @@ from ironic.common.glance_service import service_utils
|
||||
from ironic.common.i18n import _
|
||||
from ironic.common import images
|
||||
from ironic.common import states
|
||||
from ironic.common import utils
|
||||
from ironic.conductor import task_manager
|
||||
from ironic.conductor import utils as manager_utils
|
||||
from ironic.drivers.modules import deploy_utils
|
||||
@ -620,7 +620,7 @@ class IRMCDeployPrivateMethodsTestCase(db_base.DbTestCase):
|
||||
[mock.call(_get_floppy_image_name_mock(task.node)),
|
||||
mock.call(_get_deploy_iso_name_mock(task.node))])
|
||||
|
||||
@mock.patch.object(utils, 'unlink_without_raise', spec_set=True,
|
||||
@mock.patch.object(ironic_utils, 'unlink_without_raise', spec_set=True,
|
||||
autospec=True)
|
||||
def test__remove_share_file(self, unlink_without_raise_mock):
|
||||
CONF.irmc.remote_image_share_name = '/'
|
||||
|
@ -26,12 +26,12 @@ import string
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
from oslo_utils import netutils
|
||||
|
||||
from ironic.common import exception
|
||||
from ironic.common import utils
|
||||
from ironic.drivers.modules import console_utils
|
||||
from ironic.drivers.modules import ipmitool as ipmi
|
||||
from ironic.tests.unit.db import base as db_base
|
||||
@ -106,7 +106,7 @@ class ConsoleUtilsTestCase(db_base.DbTestCase):
|
||||
def test__get_console_pid(self, mock_exec):
|
||||
tmp_file_handle = tempfile.NamedTemporaryFile()
|
||||
tmp_file = tmp_file_handle.name
|
||||
self.addCleanup(utils.unlink_without_raise, tmp_file)
|
||||
self.addCleanup(ironic_utils.unlink_without_raise, tmp_file)
|
||||
with open(tmp_file, "w") as f:
|
||||
f.write("12345\n")
|
||||
|
||||
@ -121,7 +121,7 @@ class ConsoleUtilsTestCase(db_base.DbTestCase):
|
||||
def test__get_console_pid_not_a_num(self, mock_exec):
|
||||
tmp_file_handle = tempfile.NamedTemporaryFile()
|
||||
tmp_file = tmp_file_handle.name
|
||||
self.addCleanup(utils.unlink_without_raise, tmp_file)
|
||||
self.addCleanup(ironic_utils.unlink_without_raise, tmp_file)
|
||||
with open(tmp_file, "w") as f:
|
||||
f.write("Hello World\n")
|
||||
|
||||
@ -137,7 +137,7 @@ class ConsoleUtilsTestCase(db_base.DbTestCase):
|
||||
console_utils._get_console_pid,
|
||||
self.info['uuid'])
|
||||
|
||||
@mock.patch.object(utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(os, 'kill', autospec=True)
|
||||
@mock.patch.object(console_utils, '_get_console_pid', autospec=True)
|
||||
def test__stop_console(self, mock_pid, mock_kill, mock_unlink):
|
||||
@ -151,7 +151,7 @@ class ConsoleUtilsTestCase(db_base.DbTestCase):
|
||||
signal.SIGTERM)
|
||||
mock_unlink.assert_called_once_with(pid_file)
|
||||
|
||||
@mock.patch.object(utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(os, 'kill', autospec=True)
|
||||
@mock.patch.object(console_utils, '_get_console_pid', autospec=True)
|
||||
def test__stop_console_nopid(self, mock_pid, mock_kill, mock_unlink):
|
||||
@ -167,7 +167,7 @@ class ConsoleUtilsTestCase(db_base.DbTestCase):
|
||||
self.assertFalse(mock_kill.called)
|
||||
mock_unlink.assert_called_once_with(pid_file)
|
||||
|
||||
@mock.patch.object(utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(os, 'kill', autospec=True)
|
||||
@mock.patch.object(console_utils, '_get_console_pid', autospec=True)
|
||||
def test__stop_console_shellinabox_not_running(self, mock_pid,
|
||||
@ -183,7 +183,7 @@ class ConsoleUtilsTestCase(db_base.DbTestCase):
|
||||
signal.SIGTERM)
|
||||
mock_unlink.assert_called_once_with(pid_file)
|
||||
|
||||
@mock.patch.object(utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(os, 'kill', autospec=True)
|
||||
@mock.patch.object(console_utils, '_get_console_pid', autospec=True)
|
||||
def test__stop_console_exception(self, mock_pid, mock_kill, mock_unlink):
|
||||
|
@ -20,7 +20,7 @@ import time
|
||||
import types
|
||||
|
||||
from ironic_lib import disk_utils
|
||||
from ironic_lib import utils as lib_utils
|
||||
from ironic_lib import utils as ironic_utils
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
from oslo_utils import uuidutils
|
||||
@ -784,7 +784,7 @@ class PhysicalWorkTestCase(tests_base.TestCase):
|
||||
self.assertFalse(disk_utils_mock.get_dev_block_size.called)
|
||||
self.assertEqual(root_uuid, uuid_dict_returned['root uuid'])
|
||||
|
||||
@mock.patch.object(lib_utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'unlink_without_raise', autospec=True)
|
||||
def test_deploy_partition_image_with_configdrive(self, mock_unlink):
|
||||
"""Check loosely all functions are called with right args."""
|
||||
address = '127.0.0.1'
|
||||
|
@ -19,6 +19,7 @@ import os
|
||||
import tempfile
|
||||
|
||||
from ironic_lib import disk_utils
|
||||
from ironic_lib import utils as ironic_utils
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
from oslo_utils import fileutils
|
||||
@ -386,7 +387,7 @@ class IscsiDeployMethodsTestCase(db_base.DbTestCase):
|
||||
'disk'),
|
||||
image_path)
|
||||
|
||||
@mock.patch.object(utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(utils, 'rmtree_without_raise', autospec=True)
|
||||
@mock.patch.object(iscsi_deploy, 'InstanceImageCache', autospec=True)
|
||||
def test_destroy_images(self, mock_cache, mock_rmtree, mock_unlink):
|
||||
|
@ -19,6 +19,7 @@ import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
from ironic_lib import utils as ironic_utils
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
from oslo_serialization import jsonutils as json
|
||||
@ -30,7 +31,6 @@ from ironic.common import exception
|
||||
from ironic.common.glance_service import base_image_service
|
||||
from ironic.common import pxe_utils
|
||||
from ironic.common import states
|
||||
from ironic.common import utils
|
||||
from ironic.conductor import task_manager
|
||||
from ironic.drivers.modules import deploy_utils
|
||||
from ironic.drivers.modules import pxe
|
||||
@ -486,7 +486,7 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
|
||||
self.assertFalse(mock_log.called)
|
||||
|
||||
|
||||
@mock.patch.object(utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(ironic_utils, 'unlink_without_raise', autospec=True)
|
||||
@mock.patch.object(pxe_utils, 'clean_up_pxe_config', autospec=True)
|
||||
@mock.patch.object(pxe, 'TFTPImageCache', autospec=True)
|
||||
class CleanUpPxeEnvTestCase(db_base.DbTestCase):
|
||||
|
Loading…
x
Reference in New Issue
Block a user