kuryr-libnetwork/kuryr_libnetwork/server.py
Marco Chiappero 09f11aa394 Driver based model for kuryr-libnetwork
This patch introduces drivers to perform deployment specific functions
for libnetwork. This patch is based on and complementary to the driver
model introduced in kuryr-lib for port binding, by enabling its use in
kuryr-libnetwork.

Initially the following two drivers will be available and included:
* veth: this driver will exclusively make use of the the corresponding
  kuryr-lib veth driver.
* nested: this driver is intended for nested containers and will enable
  the use of ipvlan/macvlan binding drivers.

The driver will be selected by means of a new 'port_driver' option.

NOTE: Due to https://bugs.launchpad.net/kuryr-libnetwork/+bug/1651015
When trying nested ports, it is important to use Kuryr to create the
networks that will be used by Nova to create the instances, otherwise
the nested ports will not be able to be cleaned.

DocImpact
Co-Authored-By: Luis Tomas Bolivar <ltomasbo@redhat.com>
Co-Authored-By: Louise Daly <louise.m.daly@intel.com>
Co-Authored-By: Gary Loughnane <gary.loughnane@intel.com>
Implements: blueprint driver-binding-ipvlan

Change-Id: I380fb017dc97a2cd54a404ec3c8154ecc2df80b8
2016-12-20 14:52:16 +00:00

46 lines
1.5 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import os
import sys
from oslo_log import log
from six.moves.urllib import parse
from kuryr_libnetwork import app
from kuryr_libnetwork import config
from kuryr_libnetwork import controllers
def configure_app():
config.init(sys.argv[1:])
log.setup(config.CONF, 'kuryr')
controllers.neutron_client()
controllers.check_for_neutron_ext_support()
controllers.check_for_neutron_ext_tag()
controllers.load_default_subnet_pools()
controllers.load_port_driver()
def start():
configure_app()
kuryr_uri = parse.urlparse(config.CONF.kuryr_uri)
app.run(kuryr_uri.hostname, kuryr_uri.port)
if __name__ == '__main__':
sys.exit(start())
elif 'UWSGI_ORIGINAL_PROC_NAME' in os.environ:
# The module is being loaded by uWSGI to get the Flask app running under
# it. This allows Neutron to be set, since uWSGI does not run 'start',
# which would trigger the embedded Flask wsgi development server.
configure_app()