| 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) |