summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2012-07-16 12:41:47 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2012-07-16 14:39:39 +0900
commit42f704f94344f9811737a9276c1163db28196200 (patch)
tree307d04bbc9085bc97d577641d85cc44a44500833
parentc9edce48725f17fef4330e4f41d81f1894b1575d (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.py10
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)