From 42f704f94344f9811737a9276c1163db28196200 Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Mon, 16 Jul 2012 12:41:47 +0900 Subject: enable applications to specify OF versions Some applications need to use particular OF versions. With this patch, applications can specify OF versions in the following way: class YourApplication(app_manager.RyuApp): OFP_VERSIONS = [ofproto_v1_1.OFP_VERSION, ofproto_v1_2.OFP_VERSION] Signed-off-by: FUJITA Tomonori Reviewed-by: Isaku Yamahata --- ryu/base/app_manager.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ryu/base/app_manager.py b/ryu/base/app_manager.py index 7b44eed0..5a35a6e6 100644 --- a/ryu/base/app_manager.py +++ b/ryu/base/app_manager.py @@ -19,6 +19,7 @@ import logging from ryu import utils from ryu.controller.handler import register_instance +from ryu.controller.controller import Datapath LOG = logging.getLogger('ryu.base.app_manager') @@ -111,6 +112,15 @@ class AppManager(object): # Do we need to support multiple instances? # Yes, maybe for slicing. LOG.info('instantiating app %s', app_name) + + if 'OFP_VERSIONS' in cls.__dict__: + for k in Datapath.supported_ofp_version.keys(): + if not k in cls.OFP_VERSIONS: + del Datapath.supported_ofp_version[k] + + assert len(Datapath.supported_ofp_version), \ + 'No OpenFlow version is available' + assert app_name not in self.applications app = cls(*args, **kwargs) register_instance(app) -- cgit v1.2.3