mactime: add a "top" command to watch device stats
[vpp.git] / test / vpp_dhcp.py
1 from vpp_object import VppObject
2
3
4 class VppDHCPProxy(VppObject):
5
6     def __init__(
7         self,
8         test,
9         dhcp_server,
10         dhcp_src_address,
11         rx_vrf_id=0,
12         server_vrf_id=0,
13     ):
14         self._test = test
15         self._rx_vrf_id = rx_vrf_id
16         self._server_vrf_id = server_vrf_id
17         self._dhcp_server = dhcp_server
18         self._dhcp_src_address = dhcp_src_address
19
20     def set_proxy(
21             self,
22             dhcp_server,
23             dhcp_src_address,
24             rx_vrf_id=0,
25             server_vrf_id=0):
26         if self.query_vpp_config():
27             raise Exception('Vpp config present')
28         self._rx_vrf_id = rx_vrf_id
29         self._server_vrf_id = server_vrf_id
30         self._dhcp_server = dhcp_server
31         self._dhcp_src_address = dhcp_src_address
32
33     def add_vpp_config(self):
34         self._test.vapi.dhcp_proxy_config(
35             rx_vrf_id=self._rx_vrf_id,
36             server_vrf_id=self._server_vrf_id,
37             dhcp_server=self._dhcp_server,
38             dhcp_src_address=self._dhcp_src_address)
39         self._test.registry.register(self, self._test.logger)
40
41     def remove_vpp_config(self):
42         self._test.vapi.dhcp_proxy_config(
43             rx_vrf_id=self._rx_vrf_id,
44             server_vrf_id=self._server_vrf_id,
45             dhcp_server=self._dhcp_server,
46             dhcp_src_address=self._dhcp_src_address,
47             is_add=0)
48
49     def get_vpp_dump(self):
50         dump = self._test.vapi.dhcp_proxy_dump()
51         for entry in dump:
52             if entry.rx_vrf_id == self._rx_vrf_id:
53                 return entry
54
55     def query_vpp_config(self):
56         dump = self.get_vpp_dump()
57         return True if dump else False
58
59     def object_id(self):
60         return "dhcp-proxy-%d" % self._rx_vrf_id
61
62
63 class VppDHCPClient(VppObject):
64
65     def __init__(
66             self,
67             test,
68             sw_if_index,
69             hostname,
70             id=None,
71             want_dhcp_event=False,
72             set_broadcast_flag=True,
73             dscp=None,
74             pid=None):
75         self._test = test
76         self._sw_if_index = sw_if_index
77         self._hostname = hostname
78         self._id = id
79         self._want_dhcp_event = want_dhcp_event
80         self._set_broadcast_flag = set_broadcast_flag
81         self._dscp = dscp
82         self._pid = pid
83
84     def set_client(
85             self,
86             sw_if_index,
87             hostname,
88             id=None,
89             want_dhcp_event=False,
90             set_broadcast_flag=True,
91             dscp=None,
92             pid=None):
93         if self.query_vpp_config():
94             raise Exception('Vpp config present')
95         self._sw_if_index = sw_if_index
96         self._hostname = hostname
97         self._id = id
98         self._want_dhcp_event = want_dhcp_event
99         self._set_broadcast_flag = set_broadcast_flag
100         self._dscp = dscp
101         self._pid = pid
102
103     def add_vpp_config(self):
104         client = {'sw_if_index': self._sw_if_index, 'hostname': self._hostname,
105                   'id': self._id, 'want_dhcp_event': self._want_dhcp_event,
106                   'set_broadcast_flag': self._set_broadcast_flag,
107                   'dscp': self._dscp, 'pid': self._pid}
108         self._test.vapi.dhcp_client_config(client=client)
109         self._test.registry.register(self, self._test.logger)
110
111     def remove_vpp_config(self):
112         client = client = {
113             'sw_if_index': self._sw_if_index,
114             'hostname': self._hostname}
115         self._test.vapi.dhcp_client_config(client=client, is_add=0)
116
117     def get_vpp_dump(self):
118         dump = self._test.vapi.dhcp_client_dump()
119         for entry in dump:
120             if entry.client.sw_if_index == self._sw_if_index:
121                 return entry
122
123     def query_vpp_config(self):
124         dump = self.get_vpp_dump()
125         return True if dump else False
126
127     def object_id(self):
128         return "dhcp-client-%s/%d" % (self._hostname, self._sw_if_index)