09f11aa394
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
46 lines
1.5 KiB
Python
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()
|