45 lines
1.6 KiB
Python
45 lines
1.6 KiB
Python
import os, logging
|
|
from autotest_lib.client.common_lib import error
|
|
from autotest_lib.client.bin import utils
|
|
from autotest_lib.client.virt import virt_utils
|
|
|
|
|
|
def run_image_copy(test, params, env):
|
|
"""
|
|
Copy guest images from nfs server.
|
|
1) Mount the NFS share directory
|
|
2) Check the existence of source image
|
|
3) If it exists, copy the image from NFS
|
|
|
|
@param test: kvm test object
|
|
@param params: Dictionary with the test parameters
|
|
@param env: Dictionary with test environment.
|
|
"""
|
|
mount_dest_dir = params.get('dst_dir', '/mnt/images')
|
|
if not os.path.exists(mount_dest_dir):
|
|
try:
|
|
os.makedirs(mount_dest_dir)
|
|
except OSError, err:
|
|
logging.warning('mkdir %s error:\n%s', mount_dest_dir, err)
|
|
|
|
if not os.path.exists(mount_dest_dir):
|
|
raise error.TestError('Failed to create NFS share dir %s' %
|
|
mount_dest_dir)
|
|
|
|
src = params.get('images_good')
|
|
image = '%s.%s' % (os.path.split(params['image_name'])[1],
|
|
params['image_format'])
|
|
src_path = os.path.join(mount_dest_dir, image)
|
|
dst_path = '%s.%s' % (params['image_name'], params['image_format'])
|
|
cmd = 'cp %s %s' % (src_path, dst_path)
|
|
|
|
if not virt_utils.mount(src, mount_dest_dir, 'nfs', 'ro'):
|
|
raise error.TestError('Could not mount NFS share %s to %s' %
|
|
(src, mount_dest_dir))
|
|
|
|
# Check the existence of source image
|
|
if not os.path.exists(src_path):
|
|
raise error.TestError('Could not find %s in NFS share' % src_path)
|
|
|
|
logging.debug('Copying image %s...', image)
|
|
utils.system(cmd)
|