Пример #1
0
 def unplug(self, device_name, bridge=None, namespace=None, prefix=None):
     """Unplug the interface."""
     tap_name = self._get_tap_name(device_name, prefix)
     try:
         cmd = ['ivs-ctl', 'del-port', tap_name]
         utils.execute(cmd, run_as_root=True)
         device = ip_lib.IPDevice(device_name, namespace=namespace)
         device.link.delete()
         LOG.debug("Unplugged interface '%s'", device_name)
     except RuntimeError:
         LOG.error(_LE("Failed unplugging interface '%s'"),
                   device_name)
Пример #2
0
    def _kill_process(self, pid, kill_signal):
        try:
            # A process started by a root helper will be running as
            # root and need to be killed via the same helper.
            utils.execute(['kill', '-%d' % kill_signal, pid],
                          run_as_root=self.run_as_root)
        except Exception as ex:
            stale_pid = (isinstance(ex, RuntimeError) and
                         'No such process' in str(ex))
            if not stale_pid:
                LOG.exception(_LE('An error occurred while killing [%s].'),
                              self.cmd)
                return False

        if self._process:
            self._process.wait()
        return True
Пример #3
0
    def _kill_process(self, pid, kill_signal):
        try:
            # A process started by a root helper will be running as
            # root and need to be killed via the same helper.
            utils.execute(['kill', '-%d' % kill_signal, pid],
                          run_as_root=self.run_as_root)
        except Exception as ex:
            stale_pid = (isinstance(ex, RuntimeError)
                         and 'No such process' in str(ex))
            if not stale_pid:
                LOG.exception(_LE('An error occurred while killing [%s].'),
                              self.cmd)
                return False

        if self._process:
            self._process.wait()
        return True
    def disable(self, sig='9', get_stop_command=None):
        pid = self.pid

        if self.active:
            if get_stop_command:
                cmd = get_stop_command(self.get_pid_file_name())
                ip_wrapper = ip_lib.IPWrapper(namespace=self.namespace)
                ip_wrapper.netns.execute(cmd, addl_env=self.cmd_addl_env)
            else:
                cmd = ['kill', '-%s' % (sig), pid]
                utils.execute(cmd, run_as_root=True)
                # In the case of shutting down, remove the pid file
                if sig == '9':
                    fileutils.delete_if_exists(self.get_pid_file_name())
        elif pid:
            LOG.debug('Process for %(uuid)s pid %(pid)d is stale, ignoring '
                      'signal %(signal)s', {'uuid': self.uuid, 'pid': pid,
                                            'signal': sig})
        else:
            LOG.debug('No process started for %s', self.uuid)
Пример #5
0
    def disable(self, sig='9', get_stop_command=None):
        pid = self.pid

        if self.active:
            if get_stop_command:
                cmd = get_stop_command(self.get_pid_file_name())
                ip_wrapper = ip_lib.IPWrapper(namespace=self.namespace)
                ip_wrapper.netns.execute(cmd, addl_env=self.cmd_addl_env)
            else:
                cmd = ['kill', '-%s' % (sig), pid]
                utils.execute(cmd, run_as_root=True)
                # In the case of shutting down, remove the pid file
                if sig == '9':
                    fileutils.delete_if_exists(self.get_pid_file_name())
        elif pid:
            LOG.debug(
                'Process for %(uuid)s pid %(pid)d is stale, ignoring '
                'signal %(signal)s', {
                    'uuid': self.uuid,
                    'pid': pid,
                    'signal': sig
                })
        else:
            LOG.debug('No process started for %s', self.uuid)
    def _get_ip_link_output(cls):
        """Gets the output of the ip link help command

        Runs ip link help command and stores its output
        Note: ip link help return error and writes its output to stderr
                so we get the output from there. however, if this issue
                will be solved and the command will write to stdout, we
                will get the output from there too.
        """
        try:
            ip_cmd = ['ip', 'link', 'help']
            _stdout, _stderr = utils.execute(ip_cmd,
                                             check_exit_code=False,
                                             return_stderr=True,
                                             log_fail_as_error=False)
        except Exception as e:
            LOG.exception(_LE("Failed executing ip command"))
            raise UnsupportedIpLinkCommand(reason=e)
        return _stdout or _stderr
    def _get_ip_link_output(cls):
        """Gets the output of the ip link help command

        Runs ip link help command and stores its output
        Note: ip link help return error and writes its output to stderr
                so we get the output from there. however, if this issue
                will be solved and the command will write to stdout, we
                will get the output from there too.
        """
        try:
            ip_cmd = ['ip', 'link', 'help']
            _stdout, _stderr = utils.execute(
                ip_cmd,
                check_exit_code=False,
                return_stderr=True,
                log_fail_as_error=False)
        except Exception as e:
            LOG.exception(_LE("Failed executing ip command"))
            raise UnsupportedIpLinkCommand(reason=e)
        return _stdout or _stderr
Пример #8
0
 def _ivs_add_port(self, device_name, port_id, mac_address):
     cmd = ['ivs-ctl', 'add-port', device_name]
     utils.execute(cmd, run_as_root=True)
Пример #9
0
 def show(cls, dev=None):
     cmd = ['bridge', 'fdb', 'show']
     if dev:
         cmd += ['dev', dev]
     return utils.execute(cmd, run_as_root=True)
Пример #10
0
 def delete(cls, mac, dev):
     return utils.execute(['bridge', 'fdb', 'delete', mac, 'dev', dev],
                          run_as_root=True)
Пример #11
0
 def show(cls, dev=None):
     cmd = ['bridge', 'fdb', 'show']
     if dev:
         cmd += ['dev', dev]
     return utils.execute(cmd, run_as_root=True)
Пример #12
0
 def delete(cls, mac, dev):
     return utils.execute(['bridge', 'fdb', 'delete', mac, 'dev', dev],
                          run_as_root=True)