From 1a11790f2d26ec92858a3ffa100388310912fae1 Mon Sep 17 00:00:00 2001 From: Michael Still Date: Fri, 3 May 2013 10:47:39 +1000 Subject: Convert to using oslo's execute() method. There are some small warts (mostly around other execute() like methods which reuse the exception). I will fix these warts in later reviews. Change-Id: Ice9cdbdc5f3e5a9f8365f5d99acf1863a9fe3e7a --- nova/virt/baremetal/tilera_pdu.py | 5 +++-- nova/virt/baremetal/virtual_power_driver.py | 3 ++- nova/virt/baremetal/volume_driver.py | 7 ++++--- nova/virt/disk/api.py | 3 ++- nova/virt/hyperv/vmops.py | 3 ++- nova/virt/libvirt/driver.py | 5 +++-- nova/virt/libvirt/utils.py | 6 +++--- nova/virt/libvirt/vif.py | 5 +++-- nova/virt/libvirt/volume.py | 13 +++++++------ nova/virt/powervm/common.py | 15 +++++++++------ nova/virt/powervm/operator.py | 4 ++-- nova/virt/xenapi/vm_utils.py | 5 +++-- 12 files changed, 43 insertions(+), 31 deletions(-) (limited to 'nova/virt') diff --git a/nova/virt/baremetal/tilera_pdu.py b/nova/virt/baremetal/tilera_pdu.py index 86e6086ae..0e491168f 100755 --- a/nova/virt/baremetal/tilera_pdu.py +++ b/nova/virt/baremetal/tilera_pdu.py @@ -26,6 +26,7 @@ from oslo.config import cfg from nova import exception from nova.openstack.common import log as logging +from nova.openstack.common import processutils from nova import utils from nova.virt.baremetal import baremetal_states from nova.virt.baremetal import base @@ -104,7 +105,7 @@ class Pdu(base.PowerManager): utils.execute('ping', '-c1', self.address, check_exit_code=True) return CONF.baremetal.tile_pdu_on - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: return CONF.baremetal.tile_pdu_off else: try: @@ -112,7 +113,7 @@ class Pdu(base.PowerManager): CONF.baremetal.tile_pdu_ip, mode) time.sleep(CONF.baremetal.tile_power_wait) return mode - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: LOG.exception(_("PDU failed")) def _is_power(self, state): diff --git a/nova/virt/baremetal/virtual_power_driver.py b/nova/virt/baremetal/virtual_power_driver.py index 2e659b8c3..22dd815d0 100644 --- a/nova/virt/baremetal/virtual_power_driver.py +++ b/nova/virt/baremetal/virtual_power_driver.py @@ -23,6 +23,7 @@ from nova import context as nova_context from nova import exception from nova.openstack.common import importutils from nova.openstack.common import log as logging +from nova.openstack.common import processutils from nova import utils from nova.virt.baremetal import baremetal_states from nova.virt.baremetal import base @@ -233,7 +234,7 @@ class VirtualPowerManager(base.PowerManager): check_exit_code=check_exit_code) result = stdout.strip().splitlines() LOG.debug('Result for run_command: %s' % result) - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: result = [] LOG.exception("Error running command: %s" % cmd) return result diff --git a/nova/virt/baremetal/volume_driver.py b/nova/virt/baremetal/volume_driver.py index cc23f9064..6cf6b775f 100644 --- a/nova/virt/baremetal/volume_driver.py +++ b/nova/virt/baremetal/volume_driver.py @@ -24,6 +24,7 @@ from nova import context as nova_context from nova import exception from nova.openstack.common import importutils from nova.openstack.common import log as logging +from nova.openstack.common import processutils from nova import utils from nova.virt.baremetal import db as bmdb from nova.virt.libvirt import utils as libvirt_utils @@ -91,7 +92,7 @@ def _delete_iscsi_export_tgtadm(tid): '--tid', tid, '--lun', '1', run_as_root=True) - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: pass try: utils.execute('tgtadm', '--lld', 'iscsi', @@ -99,7 +100,7 @@ def _delete_iscsi_export_tgtadm(tid): '--op', 'delete', '--tid', tid, run_as_root=True) - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: pass # Check if the tid is deleted, that is, check the tid no longer exists. # If the tid dose not exist, tgtadm returns with exit_code 22. @@ -113,7 +114,7 @@ def _delete_iscsi_export_tgtadm(tid): '--op', 'show', '--tid', tid, run_as_root=True) - except exception.ProcessExecutionError as e: + except processutils.ProcessExecutionError as e: if e.exit_code == 22: # OK, the tid is deleted return diff --git a/nova/virt/disk/api.py b/nova/virt/disk/api.py index 497e2baaa..2c5def493 100755 --- a/nova/virt/disk/api.py +++ b/nova/virt/disk/api.py @@ -37,6 +37,7 @@ from oslo.config import cfg from nova import exception from nova.openstack.common import jsonutils from nova.openstack.common import log as logging +from nova.openstack.common import processutils from nova import paths from nova import utils from nova.virt.disk.mount import api as mount @@ -155,7 +156,7 @@ def can_resize_fs(image, size, use_cow=False): # For raw, we can directly inspect the file system try: utils.execute('e2label', image) - except exception.ProcessExecutionError as e: + except processutils.ProcessExecutionError as e: LOG.debug(_('Unable to determine label for image %(image)s with ' 'error %(errror)s. Cannot resize.'), {'image': image, diff --git a/nova/virt/hyperv/vmops.py b/nova/virt/hyperv/vmops.py index 615567c0d..2bda94a35 100644 --- a/nova/virt/hyperv/vmops.py +++ b/nova/virt/hyperv/vmops.py @@ -28,6 +28,7 @@ from nova import exception from nova.openstack.common import excutils from nova.openstack.common import importutils from nova.openstack.common import log as logging +from nova.openstack.common import processutils from nova import utils from nova.virt import configdrive from nova.virt.hyperv import constants @@ -229,7 +230,7 @@ class VMOps(object): with configdrive.ConfigDriveBuilder(instance_md=inst_md) as cdb: try: cdb.make_drive(configdrive_path_iso) - except exception.ProcessExecutionError as e: + except processutils.ProcessExecutionError as e: with excutils.save_and_reraise_exception(): LOG.error(_('Creating config drive failed with error: %s'), e, instance=instance) diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index e8a0a46eb..a0d2d0a7b 100755 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -77,6 +77,7 @@ from nova.openstack.common import jsonutils from nova.openstack.common import log as logging from nova.openstack.common import loopingcall from nova.openstack.common.notifier import api as notifier +from nova.openstack.common import processutils from nova import utils from nova import version from nova.virt import configdrive @@ -1871,7 +1872,7 @@ class LibvirtDriver(driver.ComputeDriver): try: cdb.make_drive(configdrive_path) - except exception.ProcessExecutionError as e: + except processutils.ProcessExecutionError as e: with excutils.save_and_reraise_exception(): LOG.error(_('Creating config drive failed ' 'with error: %s'), @@ -3236,7 +3237,7 @@ class LibvirtDriver(driver.ComputeDriver): try: self.plug_vifs(instance, network_info) break - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: if cnt == max_retry - 1: raise else: diff --git a/nova/virt/libvirt/utils.py b/nova/virt/libvirt/utils.py index 96f84c194..07ab44769 100755 --- a/nova/virt/libvirt/utils.py +++ b/nova/virt/libvirt/utils.py @@ -26,8 +26,8 @@ import os from lxml import etree from oslo.config import cfg -from nova import exception from nova.openstack.common import log as logging +from nova.openstack.common import processutils from nova import utils from nova.virt import images @@ -64,7 +64,7 @@ def get_fc_hbas(): try: out, err = execute('systool', '-c', 'fc_host', '-v', run_as_root=True) - except exception.ProcessExecutionError as exc: + except processutils.ProcessExecutionError as exc: # This handles the case where rootwrap is used # and systool is not installed # 96 = nova.cmd.rootwrap.RC_NOEXECFOUND: @@ -427,7 +427,7 @@ def copy_image(src, dest, host=None): # can fall back to scp, without having run out of space # on the destination for example. execute('rsync', '--sparse', '--compress', '--dry-run', src, dest) - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: execute('scp', src, dest) else: execute('rsync', '--sparse', '--compress', src, dest) diff --git a/nova/virt/libvirt/vif.py b/nova/virt/libvirt/vif.py index db7bb96d8..28c481cfe 100644 --- a/nova/virt/libvirt/vif.py +++ b/nova/virt/libvirt/vif.py @@ -27,6 +27,7 @@ from nova import exception from nova.network import linux_net from nova.network import model as network_model from nova.openstack.common import log as logging +from nova.openstack.common import processutils from nova import utils from nova.virt.libvirt import config as vconfig from nova.virt.libvirt import designer @@ -417,7 +418,7 @@ class LibvirtGenericVIFDriver(LibvirtBaseVIFDriver): network, mapping = vif linux_net.delete_ovs_vif_port(self.get_bridge_name(network), self.get_vif_devname(mapping)) - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: LOG.exception(_("Failed while unplugging vif"), instance=instance) def unplug_ovs_bridge(self, instance, vif): @@ -446,7 +447,7 @@ class LibvirtGenericVIFDriver(LibvirtBaseVIFDriver): linux_net.delete_ovs_vif_port(self.get_bridge_name(network), v2_name) - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: LOG.exception(_("Failed while unplugging vif"), instance=instance) def unplug_ovs(self, instance, vif): diff --git a/nova/virt/libvirt/volume.py b/nova/virt/libvirt/volume.py index 1d226ae83..5f8d4bd72 100644 --- a/nova/virt/libvirt/volume.py +++ b/nova/virt/libvirt/volume.py @@ -30,6 +30,7 @@ from nova import exception from nova.openstack.common import lockutils from nova.openstack.common import log as logging from nova.openstack.common import loopingcall +from nova.openstack.common import processutils from nova import paths from nova.storage import linuxscsi from nova import utils @@ -314,7 +315,7 @@ class LibvirtISCSIVolumeDriver(LibvirtBaseVolumeDriver): # volume is using the same target. try: self._run_iscsiadm(iscsi_properties, ()) - except exception.ProcessExecutionError as exc: + except processutils.ProcessExecutionError as exc: # iscsiadm returns 21 for "No records found" after version 2.0-871 if exc.exit_code in [21, 255]: self._run_iscsiadm(iscsi_properties, ('--op', 'new')) @@ -353,7 +354,7 @@ class LibvirtISCSIVolumeDriver(LibvirtBaseVolumeDriver): self._run_iscsiadm(iscsi_properties, ("--login",), check_exit_code=[0, 255]) - except exception.ProcessExecutionError as err: + except processutils.ProcessExecutionError as err: #as this might be one of many paths, #only set successfull logins to startup automatically if err.exit_code in [15]: @@ -484,7 +485,7 @@ class LibvirtNFSVolumeDriver(LibvirtBaseVolumeDriver): try: utils.execute(*nfs_cmd, run_as_root=True) - except exception.ProcessExecutionError as exc: + except processutils.ProcessExecutionError as exc: if ensure and 'already mounted' in exc.message: LOG.warn(_("%s is already mounted"), nfs_share) else: @@ -500,7 +501,7 @@ class LibvirtNFSVolumeDriver(LibvirtBaseVolumeDriver): """Check path.""" try: return utils.execute('stat', path, run_as_root=True) - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: return False @@ -605,7 +606,7 @@ class LibvirtGlusterfsVolumeDriver(LibvirtBaseVolumeDriver): utils.execute('mount', '-t', 'glusterfs', glusterfs_share, mount_path, run_as_root=True) - except exception.ProcessExecutionError as exc: + except processutils.ProcessExecutionError as exc: if ensure and 'already mounted' in exc.message: LOG.warn(_("%s is already mounted"), glusterfs_share) else: @@ -621,7 +622,7 @@ class LibvirtGlusterfsVolumeDriver(LibvirtBaseVolumeDriver): """Check path.""" try: return utils.execute('stat', path, run_as_root=True) - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: return False diff --git a/nova/virt/powervm/common.py b/nova/virt/powervm/common.py index 34658547c..dd6517dcd 100644 --- a/nova/virt/powervm/common.py +++ b/nova/virt/powervm/common.py @@ -21,8 +21,8 @@ import uuid import paramiko -from nova import exception as nova_exception from nova.openstack.common import log as logging +from nova.openstack.common import processutils from nova import utils from nova.virt.powervm import constants from nova.virt.powervm import exception @@ -68,7 +68,7 @@ def ssh_command_as_root(ssh_connection, cmd, check_exit_code=True): :param connection: an active paramiko.SSHClient connection. :param command: string containing the command to run. :returns: Tuple -- a tuple of (stdout, stderr) - :raises: nova.exception.ProcessExecutionError + :raises: processutils.ProcessExecutionError """ LOG.debug(_('Running cmd (SSH-as-root): %s') % cmd) chan = ssh_connection._transport.open_session() @@ -89,10 +89,13 @@ def ssh_command_as_root(ssh_connection, cmd, check_exit_code=True): if exit_status != -1: LOG.debug(_('Result was %s') % exit_status) if check_exit_code and exit_status != 0: - raise nova_exception.ProcessExecutionError(exit_code=exit_status, - stdout=stdout, - stderr=stderr, - cmd=''.join(cmd)) + # TODO(mikal): I know this is weird, but it needs to be consistent + # with processutils.execute. I will move this method to oslo in + # a later commit. + raise processutils.ProcessExecutionError(exit_code=exit_status, + stdout=stdout, + stderr=stderr, + cmd=''.join(cmd)) return (stdout, stderr) diff --git a/nova/virt/powervm/operator.py b/nova/virt/powervm/operator.py index 946835224..b5ead9064 100644 --- a/nova/virt/powervm/operator.py +++ b/nova/virt/powervm/operator.py @@ -22,9 +22,9 @@ import time from oslo.config import cfg from nova.compute import power_state -from nova import exception as nova_exception from nova.openstack.common import excutils from nova.openstack.common import log as logging +from nova.openstack.common import processutils from nova import utils from nova.virt.powervm import blockdev from nova.virt.powervm import command @@ -199,7 +199,7 @@ class PowerVMOperator(object): # system (1 in 2^28) self._operator.create_lpar(lpar_inst) LOG.debug(_("Creating LPAR instance '%s'") % instance['name']) - except nova_exception.ProcessExecutionError: + except processutils.ProcessExecutionError: LOG.exception(_("LPAR instance '%s' creation failed") % instance['name']) raise exception.PowerVMLPARCreationFailed( diff --git a/nova/virt/xenapi/vm_utils.py b/nova/virt/xenapi/vm_utils.py index e569216c8..9832dca84 100644 --- a/nova/virt/xenapi/vm_utils.py +++ b/nova/virt/xenapi/vm_utils.py @@ -44,6 +44,7 @@ from nova import exception from nova.image import glance from nova.openstack.common import excutils from nova.openstack.common import log as logging +from nova.openstack.common import processutils from nova import utils from nova.virt import configdrive from nova.virt.disk import api as disk @@ -1979,7 +1980,7 @@ def _is_vdi_pv(dev): LOG.debug(_("Found Xen kernel %s") % m.group(0)) return True LOG.debug(_("No Xen kernel found. Booting HVM.")) - except exception.ProcessExecutionError: + except processutils.ProcessExecutionError: LOG.exception(_("Error while executing pygrub! Please, ensure the " "binary is installed correctly, and available in your " "PATH; on some Linux distros, pygrub may be installed " @@ -2161,7 +2162,7 @@ def _mount_filesystem(dev_path, dir): _out, err = utils.execute('mount', '-t', 'ext2,ext3,ext4,reiserfs', dev_path, dir, run_as_root=True) - except exception.ProcessExecutionError as e: + except processutils.ProcessExecutionError as e: err = str(e) return err -- cgit