# License for the specific language governing permissions and limitations
# under the License.
+from oslo_config import cfg
+
from neutron.server import rpc_eventlet
from neutron.server import wsgi_eventlet
from neutron.server import wsgi_pecan
+def main():
+ if cfg.CONF.web_framework == 'legacy':
+ main_wsgi_eventlet()
+ else:
+ main_wsgi_pecan()
+
+
def main_wsgi_eventlet():
wsgi_eventlet.main()
cfg.BoolOpt('vlan_transparent', default=False,
help=_('If True, then allow plugins that support it to '
'create VLAN transparent networks.')),
+ cfg.StrOpt('web_framework', default='legacy',
+ choices=('legacy', 'pecan'),
+ help=_("This will choose the web framework in which to run "
+ "the Neutron API server. 'pecan' is a new experiemental "
+ "rewrite of the API server."))
]
core_cli_opts = [
--- /dev/null
+# 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 mock
+from oslo_config import cfg
+
+from neutron.cmd.eventlet import server
+from neutron.tests import base
+
+
+@mock.patch('neutron.cmd.eventlet.server.main_wsgi_eventlet')
+@mock.patch('neutron.cmd.eventlet.server.main_wsgi_pecan')
+class TestNeutronServer(base.BaseTestCase):
+
+ def test_legacy_server(self, pecan_mock, legacy_mock):
+ cfg.CONF.set_override('web_framework', 'legacy')
+ server.main()
+ pecan_mock.assert_not_called()
+ legacy_mock.assert_called_with()
+
+ def test_pecan_server(self, pecan_mock, legacy_mock):
+ cfg.CONF.set_override('web_framework', 'pecan')
+ server.main()
+ pecan_mock.assert_called_with()
+ legacy_mock.assert_not_called()
neutron-openvswitch-agent = neutron.cmd.eventlet.plugins.ovs_neutron_agent:main
neutron-ovs-cleanup = neutron.cmd.ovs_cleanup:main
neutron-pd-notify = neutron.cmd.pd_notify:main
- neutron-server = neutron.cmd.eventlet.server:main_wsgi_eventlet
- neutron-dev-server = neutron.cmd.eventlet.server:main_wsgi_pecan
+ neutron-server = neutron.cmd.eventlet.server:main
neutron-rpc-server = neutron.cmd.eventlet.server:main_rpc_eventlet
neutron-rootwrap = oslo_rootwrap.cmd:main
neutron-rootwrap-daemon = oslo_rootwrap.cmd:daemon