-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathpatch_port.py
More file actions
115 lines (86 loc) · 2.9 KB
/
Copy pathpatch_port.py
File metadata and controls
115 lines (86 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import json
class NodePort(object):
def __init__(self, port_name, port_data):
self.name = port_name
self.data = port_data
self.number = 0 # default
self.role = None
def __str__(self):
return "Port:{ name:%s, role:%s, data:%s }" % (
self.name, self.role, json.dumps(self.data)
)
@staticmethod
def is_dut_edge_port():
return False
@staticmethod
def is_host_edge_port():
return False
@staticmethod
def is_inter_switch_port():
return False
@staticmethod
def is_test_host_port():
return False
@staticmethod
def is_dut_host_port():
return False
class DispatcherPort(NodePort):
def __init__(self, port_name, port_data):
super(DispatcherPort, self).__init__(port_name, port_data)
self.number = port_data['number']
class DUTEdgePort(DispatcherPort):
def __init__(self, port_name, port_data):
super(DUTEdgePort, self).__init__(port_name, port_data)
self.role = 'dut-edge'
@staticmethod
def is_dut_edge_port():
return True
class HostEdgePort(DispatcherPort):
def __init__(self, port_name, port_data):
super(HostEdgePort, self).__init__(port_name, port_data)
self.role = 'host-edge'
@staticmethod
def is_host_edge_port():
return True
class InterSwitchPort(DispatcherPort):
def __init__(self, port_name, port_data):
super(InterSwitchPort, self).__init__(port_name, port_data)
self.role = 'inter-switch'
@staticmethod
def is_inter_switch_port():
return True
class HostPort(NodePort):
def __init__(self, port_name, port_data):
super(HostPort, self).__init__(port_name, port_data)
self.role = 'host'
self.vlan_id = 0 # default
self.vlan_tagged = False # default
def has_vlan(self):
return self.vlan_tagged
class TestHostPort(HostPort):
def __init__(self, port_name, port_data):
super(TestHostPort, self).__init__(port_name, port_data)
self.mac_addr = port_data['mac-addr']
self.ip_addr = port_data['ip-addr']
# gateway is optional
try:
self.gateway = port_data['gateway']
except KeyError:
self.gateway = None
self.role = 'test-host'
@staticmethod
def is_test_host_port():
return True
class DUTHostPort(HostPort):
def __init__(self, port_name, port_data):
super(DUTHostPort, self).__init__(port_name, port_data)
if 'vlan-id' in port_data:
self.vlan_id = port_data['vlan-id'] # overwrite if exist key
if 'vlan-tagged' in port_data:
self.vlan_tagged = port_data['vlan-tagged'] # overwrite if exist key
self.role = 'dut-host'
def has_vlan(self):
return self.vlan_tagged and 0 < self.vlan_id < 4096
@staticmethod
def is_dut_host_port():
return True