Initial code drop from Cisco
[nfvbench.git] / nfvbench / specs.py
1 # Copyright 2016 Cisco Systems, Inc.  All rights reserved.
2 #
3 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
4 #    not use this file except in compliance with the License. You may obtain
5 #    a copy of the License at
6 #
7 #         http://www.apache.org/licenses/LICENSE-2.0
8 #
9 #    Unless required by applicable law or agreed to in writing, software
10 #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12 #    License for the specific language governing permissions and limitations
13 #    under the License.
14 #
15
16
17 class Encaps(object):
18     VLAN = "VLAN"
19     VxLAN = "VxLAN"
20     BASIC = "BASIC"
21
22     encaps_mapping = {
23         'VLAN': VLAN,
24         'VXLAN': VxLAN
25     }
26
27     @classmethod
28     def get(cls, network_type):
29         return cls.encaps_mapping.get(network_type.upper(), None)
30
31
32 class ChainType(object):
33         PVP = "PVP"
34         PVVP = "PVVP"
35         EXT = "EXT"
36
37         chain_mapping = {
38             'PVP': PVP,
39             'PVVP': PVVP,
40             'EXT': EXT
41         }
42
43         @classmethod
44         def get_chain_type(cls, chain):
45             return cls.chain_mapping.get(chain.upper(), None)
46
47
48 class OpenStackSpec(object):
49
50     def __init__(self):
51         self.__vswitch = "BASIC"
52         self.__encaps = Encaps.BASIC
53
54     @property
55     def vswitch(self):
56         return self.__vswitch
57
58     @vswitch.setter
59     def vswitch(self, vsw):
60         if vsw is None:
61             raise Exception('Trying to set vSwitch as None.')
62
63         self.__vswitch = vsw.upper()
64
65     @property
66     def encaps(self):
67         return self.__encaps
68
69     @encaps.setter
70     def encaps(self, enc):
71         if enc is None:
72             raise Exception('Trying to set Encaps as None.')
73
74         self.__encaps = enc
75
76
77 class RunSpec(object):
78
79     def __init__(self, no_vswitch_access, openstack_spec):
80         self.use_vswitch = (not no_vswitch_access) and openstack_spec.vswitch != "BASIC"
81
82
83 class Specs(object):
84
85     def __init__(self):
86         self.openstack = None
87         self.run_spec = None
88
89     def set_openstack_spec(self, openstack_spec):
90         self.openstack = openstack_spec
91
92     def set_run_spec(self, run_spec):
93         self.run_spec = run_spec