284fee8a8e90b3e595880d237e5b4603a7a75299
[osm/vim-emu.git] / src / emuvim / api / openstack / resources / flow_classifier.py
1 # Copyright (c) 2015 SONATA-NFV and Paderborn University
2 # ALL RIGHTS RESERVED.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 #
16 # Neither the name of the SONATA-NFV, Paderborn University
17 # nor the names of its contributors may be used to endorse or promote
18 # products derived from this software without specific prior written
19 # permission.
20 #
21 # This work has been performed in the framework of the SONATA project,
22 # funded by the European Commission under Grant number 671517 through
23 # the Horizon 2020 and 5G-PPP programmes. The authors would like to
24 # acknowledge the contributions of their colleagues of the SONATA
25 # partner consortium (www.sonata-nfv.eu).
26 import uuid
27
28
29 class FlowClassifier(object):
30 def __init__(self, name):
31 self.id = str(uuid.uuid4())
32 self.tenant_id = "abcdefghijklmnopqrstuvwxyz123456"
33 self.name = name
34 self.description = ""
35 self.ethertype = "IPv4"
36 self.protocol = None
37 self.source_port_range_min = 0
38 self.source_port_range_max = 0
39 self.destination_port_range_min = 0
40 self.destination_port_range_max = 0
41 self.source_ip_prefix = None
42 self.destination_ip_prefix = None
43 self.logical_source_port = ""
44 self.logical_destination_port = ""
45 self.l7_parameters = dict()
46
47 def create_dict(self, compute):
48 representation = {
49 "name": self.name,
50 "tenant_id": self.tenant_id,
51 "description": self.description,
52 "id": self.id,
53 }
54 if self.ethertype:
55 representation["ethertype"] = self.ethertype
56 if self.protocol:
57 representation["protocol"] = self.protocol
58 if self.source_port_range_min:
59 representation["source_port_range_min"] = self.source_port_range_min
60 if self.source_port_range_max:
61 representation["source_port_range_max"] = self.source_port_range_max
62 if self.destination_port_range_min:
63 representation["destination_port_range_min"] = self.destination_port_range_min
64 if self.destination_port_range_max:
65 representation["destination_port_range_max"] = self.destination_port_range_max
66 if self.source_ip_prefix:
67 representation["source_ip_prefix"] = self.source_ip_prefix
68 if self.destination_ip_prefix:
69 representation["destination_ip_prefix"] = self.destination_ip_prefix
70 if len(self.logical_source_port):
71 representation["logical_source_port"] = self.logical_source_port
72 if len(self.logical_destination_port):
73 representation["logical_destination_port"] = self.logical_destination_port
74 if len(self.l7_parameters.items()):
75 representation["l7_parameters"] = self.l7_parameters
76
77 return representation