Python oslo_concurrency.processutils.ProcessExecutionError() Examples
The following are 30
code examples of oslo_concurrency.processutils.ProcessExecutionError().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
oslo_concurrency.processutils
, or try the search function
.
Example #1
Source File: nvmeof.py From os-brick with Apache License 2.0 | 6 votes |
def _try_disconnect_volume(self, conn_nqn, ignore_errors=False): cmd = [ 'nvme', 'disconnect', '-n', conn_nqn] try: self._execute( *cmd, root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError: LOG.error( "Failed to disconnect from NVMe nqn " "%(conn_nqn)s", {'conn_nqn': conn_nqn}) if not ignore_errors: raise
Example #2
Source File: __init__.py From os-net-config with Apache License 2.0 | 6 votes |
def ovs_appctl(self, action, *parameters): """Run 'ovs-appctl' with the specified action Its possible the command may fail due to timing if, for example, the command affects an interface and it the prior ifup command has not completed. So retry the command and if a failures still occurs save the error for later handling. :param action: The ovs-appctl action. :param parameters: Parameters to pass to ovs-appctl. """ msg = 'Running ovs-appctl %s %s' % (action, parameters) try: self.execute(msg, '/bin/ovs-appctl', action, *parameters, delay_on_retry=True, attempts=5) except processutils.ProcessExecutionError as e: self.errors.append(e)
Example #3
Source File: utils.py From os-net-config with Apache License 2.0 | 6 votes |
def get_pci_address(ifname, noop): # TODO(skramaja): Validate if the given interface supports dpdk if not noop: try: out, err = processutils.execute('ethtool', '-i', ifname) if not err: for item in out.split('\n'): if 'bus-info' in item: return item.split(' ')[1] except processutils.ProcessExecutionError: # If ifname is already bound, then ethtool will not be able to # list the device, in which case, binding is already done, proceed # with scripts generation. return else: logger.info('Fetch the PCI address of the interface %s using ' 'ethtool' % ifname)
Example #4
Source File: lvm.py From os-brick with Apache License 2.0 | 6 votes |
def deactivate_lv(self, name): lv_path = self.vg_name + '/' + self._mangle_lv_name(name) cmd = ['lvchange', '-a', 'n'] cmd.append(lv_path) try: self._execute(*cmd, root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError as err: LOG.exception('Error deactivating LV') LOG.error('Cmd :%s', err.cmd) LOG.error('StdOut :%s', err.stdout) LOG.error('StdErr :%s', err.stderr) raise # Wait until lv is deactivated to return in # order to prevent a race condition. self._wait_for_volume_deactivation(name)
Example #5
Source File: vifs.py From zun with Apache License 2.0 | 6 votes |
def unplug_iovisor(self, instance, vif): """Unplug vif from IOvisor Offboard an interface and deletes port from IOvisor """ if_local_name = 'tap%s' % vif['id'][:11] iface_id = vif['id'] try: utils.execute('ifc_ctl', 'gateway', 'ifdown', if_local_name, 'access_vm', vif['network']['label'] + "_" + iface_id, vif['address'], run_as_root=True) utils.execute('ifc_ctl', 'gateway', 'del_port', if_local_name, run_as_root=True) linux_net.delete_net_dev(if_local_name) except processutils.ProcessExecutionError: LOG.exception("Failed while unplugging vif", instance=instance)
Example #6
Source File: test_nvmeof.py From os-brick with Apache License 2.0 | 6 votes |
def test_connect_nvme_retry_success( self, mock_sleep, mock_execute, mock_devices, mock_blk): connection_properties = {'target_portal': 'portal', 'target_port': 1, 'nqn': 'nqn.volume_123', 'device_path': '', 'transport_type': 'rdma'} mock_devices.side_effect = [ ['/dev/nvme0n1'], ['/dev/nvme0n1', '/dev/nvme0n2']] mock_blk.return_value = True device_info = self.connector.connect_volume( connection_properties) mock_execute.side_effect = [ putils.ProcessExecutionError, putils.ProcessExecutionError, None] self.assertEqual('/dev/nvme0n2', device_info['path']) self.assertEqual('block', device_info['type'])
Example #7
Source File: impl_gdnsd.py From designate with Apache License 2.0 | 6 votes |
def _check_conf(self): """Run gdnsd to check its configuration """ try: out, err = utils.execute( cfg.CONF[CFG_GROUP_NAME].gdnsd_cmd_name, '-D', '-x', 'checkconf', '-c', self._confdir_path, run_as_root=False, ) except ProcessExecutionError as e: LOG.error("Command output: %(out)r Stderr: %(err)r", { 'out': e.stdout, 'err': e.stderr }) raise exceptions.Backend("Configuration check failed")
Example #8
Source File: fs_mount.py From glance_store with Apache License 2.0 | 6 votes |
def _real_umount(self, mountpoint, rootwrap_helper): # Unmount and delete a mountpoint. # Return mount state after umount (i.e. True means still mounted) LOG.debug('Unmounting %(mountpoint)s', {'mountpoint': mountpoint}) try: processutils.execute('umount', mountpoint, run_as_root=True, attempts=3, delay_on_retry=True, root_helper=rootwrap_helper) except processutils.ProcessExecutionError as ex: LOG.error(_LE("Couldn't unmount %(mountpoint)s: %(reason)s"), {'mountpoint': mountpoint, 'reason': ex}) if not os.path.ismount(mountpoint): try: os.rmdir(mountpoint) except Exception as ex: LOG.error(_LE("Couldn't remove directory %(mountpoint)s: " "%(reason)s"), {'mountpoint': mountpoint, 'reason': ex}) return False return True
Example #9
Source File: cryptsetup.py From os-brick with Apache License 2.0 | 6 votes |
def _is_crypt_device_available(self, dev_name): if not os.path.exists('/dev/mapper/%s' % dev_name): return False try: self._execute('cryptsetup', 'status', dev_name, run_as_root=True) except processutils.ProcessExecutionError as e: # If /dev/mapper/<dev_name> is a non-crypt block device (such as a # normal disk or multipath device), exit_code will be 1. In the # case, we will omit the warning message. if e.exit_code != 1: LOG.warning('cryptsetup status %(dev_name)s exited ' 'abnormally (status %(exit_code)s): %(err)s', {"dev_name": dev_name, "exit_code": e.exit_code, "err": e.stderr}) return False return True
Example #10
Source File: linuxfc.py From os-brick with Apache License 2.0 | 6 votes |
def deconfigure_scsi_device(self, device_number, target_wwn, lun): """Write the LUN to the port's unit_remove attribute. If auto-discovery of LUNs is disabled on s390 platforms luns need to be removed from the configuration through the unit_remove interface """ LOG.debug("Deconfigure lun for s390: " "device_number=%(device_num)s " "target_wwn=%(target_wwn)s target_lun=%(target_lun)s", {'device_num': device_number, 'target_wwn': target_wwn, 'target_lun': lun}) zfcp_device_command = ("/sys/bus/ccw/drivers/zfcp/%s/%s/unit_remove" % (device_number, target_wwn)) LOG.debug("unit_remove call for s390 execute: %s", zfcp_device_command) try: self.echo_scsi_command(zfcp_device_command, lun) except putils.ProcessExecutionError as exc: LOG.warning("unit_remove call for s390 failed exit %(code)s, " "stderr %(stderr)s", {'code': exc.exit_code, 'stderr': exc.stderr})
Example #11
Source File: luks.py From os-brick with Apache License 2.0 | 6 votes |
def is_luks(root_helper, device, execute=None): """Checks if the specified device uses LUKS for encryption. :param device: the device to check :returns: true if the specified device uses LUKS; false otherwise """ try: # check to see if the device uses LUKS: exit status is 0 # if the device is a LUKS partition and non-zero if not if execute is None: execute = priv_rootwrap.execute execute('cryptsetup', 'isLuks', '--verbose', device, run_as_root=True, root_helper=root_helper, check_exit_code=True) return True except putils.ProcessExecutionError as e: LOG.warning("isLuks exited abnormally (status %(exit_code)s): " "%(stderr)s", {"exit_code": e.exit_code, "stderr": e.stderr}) return False
Example #12
Source File: linuxscsi.py From os-brick with Apache License 2.0 | 6 votes |
def is_multipath_running(enforce_multipath, root_helper, execute=None): try: if execute is None: execute = priv_rootwrap.execute cmd = ('multipathd', 'show', 'status') out, _err = execute(*cmd, run_as_root=True, root_helper=root_helper) # There was a bug in multipathd where it didn't return an error # code and just printed the error message in stdout. if out and out.startswith('error receiving packet'): raise putils.ProcessExecutionError('', out, 1, cmd, None) except putils.ProcessExecutionError as err: LOG.error('multipathd is not running: exit code %(err)s', {'err': err.exit_code}) if enforce_multipath: raise return False return True
Example #13
Source File: host_capability.py From zun with Apache License 2.0 | 6 votes |
def get_pci_resources(self): addresses = [] try: output, status = utils.execute('lspci', '-D', '-nnmm') lines = output.split('\n') for line in lines: if not line: continue columns = line.split() address = columns[0] addresses.append(address) except processutils.ProcessExecutionError as e: raise exception.CommandError(cmd='lspci', error=str(e)) pci_info = [] for addr in addresses: pci_info.append(self._get_pci_dev_info(addr)) return jsonutils.dumps(pci_info)
Example #14
Source File: nvmeof.py From os-brick with Apache License 2.0 | 6 votes |
def _get_system_uuid(self): # RSD requires system_uuid to let Cinder RSD Driver identify # Nova node for later RSD volume attachment. try: out, err = self._execute('cat', '/sys/class/dmi/id/product_uuid', root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError: try: out, err = self._execute('dmidecode', '-ssystem-uuid', root_helper=self._root_helper, run_as_root=True) if not out: LOG.warning('dmidecode returned empty system-uuid') except putils.ProcessExecutionError as e: LOG.debug("Unable to locate dmidecode. For Cinder RSD Backend," " please make sure it is installed: %s", e) out = "" return out.strip()
Example #15
Source File: base.py From os-brick with Apache License 2.0 | 6 votes |
def check_valid_device(self, path, run_as_root=True): cmd = ('dd', 'if=%(path)s' % {"path": path}, 'of=/dev/null', 'count=1') out, info = None, None try: out, info = self._execute(*cmd, run_as_root=run_as_root, root_helper=self._root_helper) except putils.ProcessExecutionError as e: LOG.error("Failed to access the device on the path " "%(path)s: %(error)s.", {"path": path, "error": e.stderr}) return False # If the info is none, the path does not exist. if info is None: return False return True
Example #16
Source File: test_nvmeof.py From os-brick with Apache License 2.0 | 5 votes |
def test_disconnect_volume_raise( self, mock_sleep, mock_execute, mock_devices): mock_execute.side_effect = putils.ProcessExecutionError mock_devices.return_value = '/dev/nvme0n1' connection_properties = {'target_portal': 'portal', 'target_port': 1, 'nqn': 'nqn.volume_123', 'device_path': '/dev/nvme0n1', 'transport_type': 'rdma'} self.assertRaises(putils.ProcessExecutionError, self.connector.disconnect_volume, connection_properties, None)
Example #17
Source File: rootwrap.py From os-brick with Apache License 2.0 | 5 votes |
def execute(*cmd, **kwargs): """NB: Raises processutils.ProcessExecutionError on failure.""" run_as_root = kwargs.pop('run_as_root', False) kwargs.pop('root_helper', None) try: if run_as_root: return execute_root(*cmd, **kwargs) else: return custom_execute(*cmd, **kwargs) except OSError as e: # Note: # putils.execute('bogus', run_as_root=True) # raises ProcessExecutionError(exit_code=1) (because there's a # "sh -c bogus" involved in there somewhere, but: # putils.execute('bogus', run_as_root=False) # raises OSError(not found). # # Lots of code in os-brick catches only ProcessExecutionError # and never encountered the latter when using rootwrap. # Rather than fix all the callers, we just always raise # ProcessExecutionError here :( sanitized_cmd = strutils.mask_password(' '.join(cmd)) raise putils.ProcessExecutionError( cmd=sanitized_cmd, description=six.text_type(e)) # See comment on `execute`
Example #18
Source File: test_luks.py From os-brick with Apache License 2.0 | 5 votes |
def test_attach_volume_not_formatted(self, mock_execute): fake_key = 'bc37c5eccebe403f9cc2d0dd20dac2bc' self.encryptor._get_key = mock.MagicMock() self.encryptor._get_key.return_value = ( test_cryptsetup.fake__get_key(None, fake_key)) mock_execute.side_effect = [ putils.ProcessExecutionError(exit_code=1), # luksOpen putils.ProcessExecutionError(exit_code=1), # isLuks mock.DEFAULT, # luksFormat mock.DEFAULT, # luksOpen mock.DEFAULT, # ln ] self.encryptor.attach_volume(None) mock_execute.assert_has_calls([ mock.call('cryptsetup', 'luksOpen', '--key-file=-', self.dev_path, self.dev_name, process_input=fake_key, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), mock.call('cryptsetup', 'isLuks', '--verbose', self.dev_path, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), mock.call('cryptsetup', '--batch-mode', 'luksFormat', '--type', 'luks2', '--key-file=-', self.dev_path, process_input=fake_key, root_helper=self.root_helper, run_as_root=True, check_exit_code=True, attempts=3), mock.call('cryptsetup', 'luksOpen', '--key-file=-', self.dev_path, self.dev_name, process_input=fake_key, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), mock.call('ln', '--symbolic', '--force', '/dev/mapper/%s' % self.dev_name, self.symlink_path, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), ], any_order=False)
Example #19
Source File: lvm.py From os-brick with Apache License 2.0 | 5 votes |
def get_lv_info(root_helper, vg_name=None, lv_name=None): """Retrieve info about LVs (all, in a VG, or a single LV). :param root_helper: root_helper to use for execute :param vg_name: optional, gathers info for only the specified VG :param lv_name: optional, gathers info for only the specified LV :returns: List of Dictionaries with LV info """ cmd = LVM.LVM_CMD_PREFIX + ['lvs', '--noheadings', '--unit=g', '-o', 'vg_name,name,size', '--nosuffix'] if lv_name is not None and vg_name is not None: cmd.append("%s/%s" % (vg_name, lv_name)) elif vg_name is not None: cmd.append(vg_name) try: (out, _err) = priv_rootwrap.execute(*cmd, root_helper=root_helper, run_as_root=True) except putils.ProcessExecutionError as err: with excutils.save_and_reraise_exception(reraise=True) as ctx: if "not found" in err.stderr or "Failed to find" in err.stderr: ctx.reraise = False LOG.info("Logical Volume not found when querying " "LVM info. (vg_name=%(vg)s, lv_name=%(lv)s", {'vg': vg_name, 'lv': lv_name}) out = None lv_list = [] if out is not None: volumes = out.split() iterator = moves.zip(*[iter(volumes)] * 3) # pylint: disable=E1101 for vg, name, size in iterator: lv_list.append({"vg": vg, "name": name, "size": size}) return lv_list
Example #20
Source File: test_luks.py From os-brick with Apache License 2.0 | 5 votes |
def test_attach_volume_not_formatted(self, mock_execute): fake_key = 'bc37c5eccebe403f9cc2d0dd20dac2bc' self.encryptor._get_key = mock.MagicMock() self.encryptor._get_key.return_value = ( test_cryptsetup.fake__get_key(None, fake_key)) mock_execute.side_effect = [ putils.ProcessExecutionError(exit_code=1), # luksOpen putils.ProcessExecutionError(exit_code=1), # isLuks mock.DEFAULT, # luksFormat mock.DEFAULT, # luksOpen mock.DEFAULT, # ln ] self.encryptor.attach_volume(None) mock_execute.assert_has_calls([ mock.call('cryptsetup', 'luksOpen', '--key-file=-', self.dev_path, self.dev_name, process_input=fake_key, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), mock.call('cryptsetup', 'isLuks', '--verbose', self.dev_path, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), mock.call('cryptsetup', '--batch-mode', 'luksFormat', '--type', 'luks1', '--key-file=-', self.dev_path, process_input=fake_key, root_helper=self.root_helper, run_as_root=True, check_exit_code=True, attempts=3), mock.call('cryptsetup', 'luksOpen', '--key-file=-', self.dev_path, self.dev_name, process_input=fake_key, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), mock.call('ln', '--symbolic', '--force', '/dev/mapper/%s' % self.dev_name, self.symlink_path, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), ], any_order=False)
Example #21
Source File: test_luks.py From os-brick with Apache License 2.0 | 5 votes |
def test_is_luks_with_error(self, mock_log, mock_execute): error_msg = "Device %s is not a valid LUKS device." % self.dev_path mock_execute.side_effect = putils.ProcessExecutionError( exit_code=1, stderr=error_msg) luks.is_luks(self.root_helper, self.dev_path, execute=mock_execute) mock_execute.assert_has_calls([ mock.call('cryptsetup', 'isLuks', '--verbose', self.dev_path, run_as_root=True, root_helper=self.root_helper, check_exit_code=True), ]) self.assertEqual(1, mock_log.warning.call_count) # warning logged
Example #22
Source File: lvm.py From os-brick with Apache License 2.0 | 5 votes |
def create_volume(self, name, size_str, lv_type='default', mirror_count=0): """Creates a logical volume on the object's VG. :param name: Name to use when creating Logical Volume :param size_str: Size to use when creating Logical Volume :param lv_type: Type of Volume (default or thin) :param mirror_count: Use LVM mirroring with specified count """ if lv_type == 'thin': pool_path = '%s/%s' % (self.vg_name, self.vg_thin_pool) cmd = LVM.LVM_CMD_PREFIX + ['lvcreate', '-T', '-V', size_str, '-n', name, pool_path] else: cmd = LVM.LVM_CMD_PREFIX + ['lvcreate', '-n', name, self.vg_name, '-L', size_str] if mirror_count > 0: cmd.extend(['-m', mirror_count, '--nosync', '--mirrorlog', 'mirrored']) terras = int(size_str[:-1]) / 1024.0 if terras >= 1.5: rsize = int(2 ** math.ceil(math.log(terras) / math.log(2))) # NOTE(vish): Next power of two for region size. See: # http://red.ht/U2BPOD cmd.extend(['-R', str(rsize)]) try: self._execute(*cmd, root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError as err: LOG.exception('Error creating Volume') LOG.error('Cmd :%s', err.cmd) LOG.error('StdOut :%s', err.stdout) LOG.error('StdErr :%s', err.stderr) raise
Example #23
Source File: test_cryptsetup.py From os-brick with Apache License 2.0 | 5 votes |
def test_attach_volume_unmangle_passphrase(self, mock_execute): fake_key = '0725230b' fake_key_mangled = '72523b' self.encryptor._get_key = mock.MagicMock() self.encryptor._get_key.return_value = fake__get_key(None, fake_key) mock_execute.side_effect = [ putils.ProcessExecutionError(exit_code=2), # luksOpen mock.DEFAULT, mock.DEFAULT, ] self.encryptor.attach_volume(None) mock_execute.assert_has_calls([ mock.call('cryptsetup', 'create', '--key-file=-', self.dev_name, self.dev_path, process_input=fake_key, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), mock.call('cryptsetup', 'create', '--key-file=-', self.dev_name, self.dev_path, process_input=fake_key_mangled, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), mock.call('ln', '--symbolic', '--force', '/dev/mapper/%s' % self.dev_name, self.symlink_path, root_helper=self.root_helper, run_as_root=True, check_exit_code=True), ]) self.assertEqual(3, mock_execute.call_count)
Example #24
Source File: lvm.py From os-brick with Apache License 2.0 | 5 votes |
def create_lv_snapshot(self, name, source_lv_name, lv_type='default'): """Creates a snapshot of a logical volume. :param name: Name to assign to new snapshot :param source_lv_name: Name of Logical Volume to snapshot :param lv_type: Type of LV (default or thin) """ source_lvref = self.get_volume(source_lv_name) if source_lvref is None: LOG.error("Trying to create snapshot by non-existent LV: %s", source_lv_name) raise exception.VolumeDeviceNotFound(device=source_lv_name) cmd = LVM.LVM_CMD_PREFIX + ['lvcreate', '--name', name, '-k', 'y', '--snapshot', '%s/%s' % (self.vg_name, source_lv_name)] if lv_type != 'thin': size = source_lvref['size'] cmd.extend(['-L', '%sg' % (size)]) try: self._execute(*cmd, root_helper=self._root_helper, run_as_root=True) except putils.ProcessExecutionError as err: LOG.exception('Error creating snapshot') LOG.error('Cmd :%s', err.cmd) LOG.error('StdOut :%s', err.stdout) LOG.error('StdErr :%s', err.stderr) raise
Example #25
Source File: executor.py From os-brick with Apache License 2.0 | 5 votes |
def _execute(self, *args, **kwargs): try: result = self.__execute(*args, **kwargs) if result: result = (self.safe_decode(result[0]), self.safe_decode(result[1])) return result except putils.ProcessExecutionError as e: self.make_putils_error_safe(e) raise
Example #26
Source File: executor.py From os-brick with Apache License 2.0 | 5 votes |
def make_putils_error_safe(cls, exc): """Converts ProcessExecutionError string attributes to unicode.""" for field in ('stderr', 'stdout', 'cmd', 'description'): value = getattr(exc, field, None) if value: setattr(exc, field, cls.safe_decode(value))
Example #27
Source File: iscsi.py From os-brick with Apache License 2.0 | 5 votes |
def get_initiator(self): """Secure helper to read file as root.""" file_path = '/etc/iscsi/initiatorname.iscsi' try: lines, _err = self._execute('cat', file_path, run_as_root=True, root_helper=self._root_helper) for line in lines.split('\n'): if line.startswith('InitiatorName='): return line[line.index('=') + 1:].strip() except putils.ProcessExecutionError: LOG.warning("Could not find the iSCSI Initiator File %s", file_path) return None
Example #28
Source File: vrtshyperscale.py From os-brick with Apache License 2.0 | 5 votes |
def disconnect_volume(self, connection_properties, device_info, force=False, ignore_errors=False): """Disconnect a volume from an instance.""" volume_name = None if 'name' in connection_properties.keys(): volume_name = connection_properties['name'] if volume_name is None: msg = _("Failed to disconnect volume: invalid volume name") raise exception.BrickException(message=msg) cmd_arg = {'operation': 'disconnect_volume'} cmd_arg['volume_guid'] = volume_name cmdarg_json = json.dumps(cmd_arg) LOG.debug("HyperScale command hscli: %(cmd_arg)s", {'cmd_arg': cmdarg_json}) try: (out, err) = self._execute('hscli', cmdarg_json, run_as_root=True, root_helper=self._root_helper) except putils.ProcessExecutionError as e: msg = (_("Error executing hscli: %(err)s") % {'err': e.stderr}) raise exception.BrickException(message=msg) if err: msg = (_("Failed to connect volume: stdout=%(out)s " "stderr=%(err)s") % {'out': out, 'err': err}) raise exception.BrickException(message=msg)
Example #29
Source File: utils.py From zun with Apache License 2.0 | 5 votes |
def custom_execute(*cmd, **kwargs): try: return processutils.execute(*cmd, **kwargs) except processutils.ProcessExecutionError as e: sanitized_cmd = strutils.mask_password(' '.join(cmd)) raise exception.CommandError(cmd=sanitized_cmd, error=str(e))
Example #30
Source File: test_connector.py From os-brick with Apache License 2.0 | 5 votes |
def test_brick_get_connector_properties_raise(self, mock_execute): self.assertRaises(putils.ProcessExecutionError, self._test_brick_get_connector_properties, True, True, None)