diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2012-07-16 12:41:47 +0900 |
---|---|---|
committer | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2012-07-16 14:39:39 +0900 |
commit | 42f704f94344f9811737a9276c1163db28196200 (patch) | |
tree | 307d04bbc9085bc97d577641d85cc44a44500833 | |
parent | c9edce48725f17fef4330e4f41d81f1894b1575d (diff) |
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 <fujita.tomonori@lab.ntt.co.jp>
Reviewed-by: Isaku Yamahata <yamahata@valinux.co.jp>
-rw-r--r-- | ryu/base/app_manager.py | 10 |
1 files changed, 10 insertions, 0 deletions
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) |