diff options
Diffstat (limited to 'core/component_factory.py')
-rw-r--r-- | core/component_factory.py | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/core/component_factory.py b/core/component_factory.py new file mode 100644 index 00000000..eb963d6f --- /dev/null +++ b/core/component_factory.py @@ -0,0 +1,101 @@ +# Copyright 2015 Intel Corporation. +# +# 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. + +"""Functions for creating controller objects based on deployment or traffic +""" + +from core.traffic_controller_rfc2544 import TrafficControllerRFC2544 +from core.vswitch_controller_p2p import VswitchControllerP2P +from core.vswitch_controller_pvp import VswitchControllerPVP +from core.vnf_controller_p2p import VnfControllerP2P +from core.vnf_controller_pvp import VnfControllerPVP +from core.collector_controller import CollectorController + + +def __init__(): + """Finds and loads all the modules required. + + Very similar code to load_trafficgens(). + """ + pass + +def create_traffic(traffic_type, trafficgen_class): + """Return a new IVSwitchController for the traffic type. + + The returned traffic controller has the given traffic type and traffic + generator class. + + traffic_types: 'rfc2544_throughput' + + :param traffic_type: Name of traffic type + :param trafficgen_class: Reference to traffic generator class to be used. + :return: A new ITrafficController + """ + #TODO - full mapping from all traffic_types to + #correct controller class + return TrafficControllerRFC2544(trafficgen_class) + +def create_vswitch(deployment_scenario, vswitch_class): + """Return a new IVSwitchController for the deployment_scenario. + + The returned controller is configured with the given vSwitch class. + + Deployment scenarios: 'p2p', 'pvp' + + :param deployment_scenario: The deployment scenario name + :param vswitch_class: Reference to vSwitch class to be used. + :return: IVSwitchController for the deployment_scenario + """ + #TODO - full mapping from all deployment_scenarios to + #correct controller class + deployment_scenario = deployment_scenario.lower() + if deployment_scenario.find("p2p") >= 0: + return VswitchControllerP2P(vswitch_class) + elif deployment_scenario.find("pvp") >= 0: + return VswitchControllerPVP(vswitch_class) + +def create_vnf(deployment_scenario, vnf_class): + """Return a new IVnfController for the deployment_scenario. + + The returned controller is configured with the given VNF class. + + Deployment scenarios: 'p2p', 'pvp' + + :param deployment_scenario: The deployment scenario name + :param vswitch_class: Reference to vSwitch class to be used. + :return: IVnfController for the deployment_scenario + """ + #TODO - full mapping from all deployment_scenarios to + #correct controller class + deployment_scenario = deployment_scenario.lower() + if deployment_scenario.find("p2p") >= 0: + return VnfControllerP2P(vnf_class) + elif deployment_scenario.find("pvp") >= 0: + return VnfControllerPVP(vnf_class) + +def create_collector(collector, collector_class): + """Return a new CollectorController of the given class + + Supported collector type strings: + 'cpu' + 'memory': + + :param collector: Collector type string + :param collector_class: The collector class to be used. + :return: A new CollectorController. + """ + collector = collector.lower() + if "cpu" in collector or "memory" in collector: + return CollectorController(collector_class) + |