コード例 #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
コード例 #4
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)
コード例 #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)
コード例 #6
0
    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
コード例 #7
0
    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)