diff options
author | ahothan <ahothan@cisco.com> | 2017-07-28 17:08:46 -0700 |
---|---|---|
committer | ahothan <ahothan@cisco.com> | 2017-07-31 12:34:00 -0700 |
commit | 04a7de082bd221eae3c7004f4e0b99dfa4f8be91 (patch) | |
tree | c9fb7beaedc80479772ba24c3b47c85d49c22f76 /nfvbench/factory.py | |
parent | b8f02ed4e72399840a93aceb02b8c53831bbe68a (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.py | 70 |
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 |