summaryrefslogtreecommitdiffstats
path: root/nfvbench/factory.py
diff options
context:
space:
mode:
authorahothan <ahothan@cisco.com>2017-07-28 17:08:46 -0700
committerahothan <ahothan@cisco.com>2017-07-31 12:34:00 -0700
commit04a7de082bd221eae3c7004f4e0b99dfa4f8be91 (patch)
treec9fb7beaedc80479772ba24c3b47c85d49c22f76 /nfvbench/factory.py
parentb8f02ed4e72399840a93aceb02b8c53831bbe68a (diff)
Initial code drop from Cisco1.0.0
Change-Id: Ie2993886dc8e95c5f73ccdb871add8b96ffcc849 Signed-off-by: ahothan <ahothan@cisco.com>
Diffstat (limited to 'nfvbench/factory.py')
-rw-r--r--nfvbench/factory.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/nfvbench/factory.py b/nfvbench/factory.py
new file mode 100644
index 0000000..35a8c1b
--- /dev/null
+++ b/nfvbench/factory.py
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+# Copyright 2017 Cisco Systems, Inc. All rights reserved.
+#
+# 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 chain_clients import EXTStageClient
+from chain_clients import PVPStageClient
+from chain_clients import PVVPStageClient
+from chain_managers import EXTStatsManager
+from chain_managers import PVPStatsManager
+from chain_managers import PVVPStatsManager
+import chain_workers as workers
+from config_plugin import ConfigPlugin
+from specs import ChainType
+import tor_client
+
+
+class BasicFactory(object):
+
+ chain_classes = [ChainType.EXT, ChainType.PVP, ChainType.PVVP]
+
+ chain_stats_classes = {
+ ChainType.EXT: EXTStatsManager,
+ ChainType.PVP: PVPStatsManager,
+ ChainType.PVVP: PVVPStatsManager,
+ }
+
+ stage_clients_classes = {
+ ChainType.EXT: EXTStageClient,
+ ChainType.PVP: PVPStageClient,
+ ChainType.PVVP: PVVPStageClient,
+ }
+
+ def get_stats_class(self, service_chain):
+ CLASS = self.chain_stats_classes.get(service_chain, None)
+ if CLASS is None:
+ raise Exception("Service chain '{}' not supported.".format(service_chain))
+
+ return CLASS
+
+ def get_stage_class(self, service_chain):
+ CLASS = self.stage_clients_classes.get(service_chain, None)
+ if CLASS is None:
+ raise Exception("VM Client for chain '{}' not supported.".format(service_chain))
+
+ return CLASS
+
+ def get_chain_worker(self, encaps, service_chain):
+ return workers.BasicWorker
+
+ def get_tor_class(self, tor_type, no_tor_access):
+ if no_tor_access or not tor_type:
+ # if no TOR access is required, use basic no-op client
+ tor_type = 'BasicTORClient'
+
+ return getattr(tor_client, tor_type)
+
+ def get_config_plugin_class(self):
+ return ConfigPlugin