From: fumihiko kakuma <[email protected]> Like ryu-manager, this agent serves Ryu applications and acts an OpenFlow controller to control switches. The neutron agent logic, which we will push to the neutron repo, is implemented as a Ryu application.
Implements: OpenStack blueprint ryu-ml2-driver https://blueprints.launchpad.net/neutron/+spec/ryu-ml2-driver Signed-off-by: YAMAMOTO Takashi <[email protected]> --- bin/neutron-ofswitch-agent | 19 ++++++++++ ryu/cmd/ofs_neutron_agent.py | 88 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100755 bin/neutron-ofswitch-agent create mode 100755 ryu/cmd/ofs_neutron_agent.py diff --git a/bin/neutron-ofswitch-agent b/bin/neutron-ofswitch-agent new file mode 100755 index 0000000..2778b22 --- /dev/null +++ b/bin/neutron-ofswitch-agent @@ -0,0 +1,19 @@ +#!/usr/bin/env python + +# Copyright (C) 2011, 2012 Nippon Telegraph and Telephone Corporation. +# +# 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. + +from ryu.cmd.ofs_neutron_agent import main +main() diff --git a/ryu/cmd/ofs_neutron_agent.py b/ryu/cmd/ofs_neutron_agent.py new file mode 100755 index 0000000..b38fefe --- /dev/null +++ b/ryu/cmd/ofs_neutron_agent.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# +# Copyright (C) 2014 Nippon Telegraph and Telephone Corporation. +# Copyright (C) 2014 VA Linux Systems Japan K.K. +# +# 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. +# @author: Fumihiko Kakuma, VA Linux Systems Japan K.K. + +from ryu.lib import hub +hub.patch() + +# TODO: +# Right now, we have our own patched copy of ovs python bindings +# Once our modification is upstreamed and widely deployed, +# use it +# +# NOTE: this modifies sys.path and thus affects the following imports. +# eg. oslo.config.cfg. +import ryu.contrib + +from oslo.config import cfg +import sys + +from neutron.openstack.common import log as os_logging +from neutron.common import config as osn_config + +from ryu import flags +from ryu import version +from ryu.app import wsgi +from ryu.base.app_manager import AppManager +from ryu.controller import controller +from ryu.topology import switches + + +LOG = os_logging.getLogger(__name__) +CONF = cfg.CONF +CONF.register_cli_opts([ + cfg.ListOpt('app-lists', default=[], + help='application module name to run'), + cfg.MultiStrOpt('app', positional=True, default=[], + help='application module name to run') +]) + + +def main(): + try: + CONF(project='ryu', version='ofs_neutron_agent %s' % version, + default_config_files=['/usr/local/etc/ryu/ryu.conf']) + except cfg.ConfigFilesNotFoundError: + CONF(project='ryu', version='ofs_neutron_agent %s' % version) + + osn_config.setup_logging(CONF) + + app_lists = CONF.app_lists + CONF.app + if not app_lists: + app_lists = ['ryu.app.ofctl.service', + 'neutron.plugins.ofswitch.agent.ofs_neutron_agent'] + + app_mgr = AppManager.get_instance() + app_mgr.load_apps(app_lists) + contexts = app_mgr.create_contexts() + services = [] + services.extend(app_mgr.instantiate_apps(**contexts)) + + webapp = wsgi.start_service(app_mgr) + if webapp: + thr = hub.spawn(webapp) + services.append(thr) + + try: + hub.joinall(services) + finally: + app_mgr.close() + + +if __name__ == "__main__": + main() -- 1.8.3.1 ------------------------------------------------------------------------------ Managing the Performance of Cloud-Based Applications Take advantage of what the Cloud has to offer - Avoid Common Pitfalls. Read the Whitepaper. http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk _______________________________________________ Ryu-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ryu-devel
