Beispiel #1
0
    def remote_createTunnel(self, name, targetIP):
        """ Create a new GRE Tunnel.

            @param name:        Unique name of the network group.
            @type  name:        str

            @param targetIP:    Target IP for the GRE Tunnel.
            @type  targetIP:    str

            @return:            Exit status of command.
            @rtype:             twisted.internet.defer.Deferred
        """
        if name not in self._bridges:
            raise InternalError('Bridge does not exist.')

        key = (name, targetIP)

        if key in self._uid:
            raise InternalError('Tunnel already exists.')

        while 1:
            uid = randomString(self._UID_LEN)

            if uid not in self._uid.itervalues():
                break

        self._uid[key] = uid
        port = 'gre-{0}'.format(uid)

        return execute(('/usr/bin/ovs-vsctl', 'add-port', 'br-{0}'.format(name),
                        port, '--', 'set', 'interface', port, 'type=gre',
                        'options:remote_ip={0}'.format(targetIP)),
                       reactor=self._reactor)
Beispiel #2
0
    def remote_createTunnel(self, name, targetIP):
        """ Create a new GRE Tunnel.

            @param name:        Unique name of the network group.
            @type  name:        str

            @param targetIP:    Target IP for the GRE Tunnel.
            @type  targetIP:    str

            @return:            Exit status of command.
            @rtype:             twisted.internet.defer.Deferred
        """
        if name not in self._bridges:
            raise InternalError('Bridge does not exist.')

        key = (name, targetIP)

        if key in self._uid:
            raise InternalError('Tunnel already exists.')

        while 1:
            uid = randomString(self._UID_LEN)

            if uid not in self._uid.itervalues():
                break

        self._uid[key] = uid
        port = 'gre-{0}'.format(uid)

        return execute(
            ('/usr/bin/ovs-vsctl', 'add-port', 'br-{0}'.format(name), port,
             '--', 'set', 'interface', port, 'type=gre',
             'options:remote_ip={0}'.format(targetIP)),
            reactor=self._reactor)
Beispiel #3
0
    def stop(self, name):
        """ Stop the container.

            @param name:        Name of the container which should be stopped.
            @type  name:        str

            @param command:     Deferred whose callback is triggered on success
                                or whose errback is triggered on failure with
                                an error message.
            @type  command:     twisted.internet.defer.Deferred
        """
        log.msg("Stop container '{0}'".format(name))
        return execute(('/usr/bin/lxc-stop', '-n', name), reactor=self._reactor)
Beispiel #4
0
    def stop(self, name):
        """ Stop the container.

            @param name:        Name of the container which should be stopped.
            @type  name:        str

            @param command:     Deferred whose callback is triggered on success
                                or whose errback is triggered on failure with
                                an error message.
            @type  command:     twisted.internet.defer.Deferred
        """
        log.msg("Stop container '{0}'".format(name))
        return execute(('/usr/bin/lxc-stop', '-n', name),
                       reactor=self._reactor)
Beispiel #5
0
    def remote_destroyBridge(self, name):
        """ Destroy a OVS Bridge.

            @param name:        Unique name of the network group.
            @type  name:        str

            @return:            Exit status of command.
            @rtype:             twisted.internet.defer.Deferred
        """
        if name not in self._bridges:
            raise InternalError("Bridge does not exist.")

        self._bridges.remove(name)
        return execute(("/usr/bin/ovs-vsctl", "del-br", "br-{0}".format(name)), reactor=self._reactor)
Beispiel #6
0
    def remote_destroyBridge(self, name):
        """ Destroy a OVS Bridge.

            @param name:        Unique name of the network group.
            @type  name:        str

            @return:            Exit status of command.
            @rtype:             twisted.internet.defer.Deferred
        """
        if name not in self._bridges:
            raise InternalError('Bridge does not exist.')

        self._bridges.remove(name)
        return execute(('/usr/bin/ovs-vsctl', 'del-br', 'br-{0}'.format(name)),
                       reactor=self._reactor)
Beispiel #7
0
    def remote_createBridge(self, name):
        """ Create a new OVS Bridge.

            @param name:        Unique name of the network group.
            @type  name:        str

            @return:            Exit status of command.
            @rtype:             twisted.internet.defer.Deferred
        """
        if name in self._bridges:
            raise InternalError('Bridge already exists.')

        self._bridges.add(name)
        return execute(('/usr/bin/ovs-vsctl', '--', '--may-exist', 'add-br',
                        'br-{0}'.format(name)), reactor=self._reactor)
Beispiel #8
0
    def start(self, name):
        """ Start the container.

            @param name:    Name of the container which should be started.
            @type  name:    str

            @return:        Deferred whose callback is triggered on success or
                            whose errback is triggered on failure with an
                            error message.
            @rtype:         twisted.internet.defer.Deferred
        """
        self._setupFiles()

        log.msg("Start container '{0}'".format(name))
        return execute(('/usr/bin/lxc-start', '-n', name, '-f', self._conf,
                        '-d'), reactor=self._reactor)
Beispiel #9
0
    def remote_createBridge(self, name):
        """ Create a new OVS Bridge.

            @param name:        Unique name of the network group.
            @type  name:        str

            @return:            Exit status of command.
            @rtype:             twisted.internet.defer.Deferred
        """
        if name in self._bridges:
            raise InternalError('Bridge already exists.')

        self._bridges.add(name)
        return execute(('/usr/bin/ovs-vsctl', '--', '--may-exist', 'add-br',
                        'br-{0}'.format(name)),
                       reactor=self._reactor)
Beispiel #10
0
    def start(self, name):
        """ Start the container.

            @param name:    Name of the container which should be started.
            @type  name:    str

            @return:        Deferred whose callback is triggered on success or
                            whose errback is triggered on failure with an
                            error message.
            @rtype:         twisted.internet.defer.Deferred
        """
        self._setupFiles()

        log.msg("Start container '{0}'".format(name))
        return execute(
            ('/usr/bin/lxc-start', '-n', name, '-f', self._conf, '-d'),
            reactor=self._reactor)
Beispiel #11
0
    def remote_destroyTunnel(self, name, targetIP):
        """ Destroy a GRE Tunnel.

            @param name:        Unique name of the network group.
            @type  name:        str

            @param targetIP:    Target IP for the GRE Tunnel.
            @type  targetIP:    str

            @return:            Exit status of command.
            @rtype:             twisted.internet.defer.Deferred
        """
        if name not in self._bridges:
            raise InternalError("Bridge does not exist.")

        key = (name, targetIP)

        if key not in self._uid:
            raise InternalError("Tunnel deos not exist.")

        return execute(("/usr/bin/ovs-vsctl", "del-port", "gre-{0}".format(self._uid.pop(key))), reactor=self._reactor)
Beispiel #12
0
    def remote_destroyTunnel(self, name, targetIP):
        """ Destroy a GRE Tunnel.

            @param name:        Unique name of the network group.
            @type  name:        str

            @param targetIP:    Target IP for the GRE Tunnel.
            @type  targetIP:    str

            @return:            Exit status of command.
            @rtype:             twisted.internet.defer.Deferred
        """
        if name not in self._bridges:
            raise InternalError('Bridge does not exist.')

        key = (name, targetIP)

        if key not in self._uid:
            raise InternalError('Tunnel deos not exist.')

        return execute(('/usr/bin/ovs-vsctl', 'del-port', 'gre-{0}'.format(
            self._uid.pop(key))),
                       reactor=self._reactor)